前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C++那些事之有趣的面试问题

C++那些事之有趣的面试问题

作者头像
公众号guangcity
发布于 2024-06-18 05:50:27
发布于 2024-06-18 05:50:27
15300
代码可运行
举报
文章被收录于专栏:光城(guangcity)光城(guangcity)
运行总次数:0
代码可运行

最近想出一些有趣的问题,做一个小总结,你能回答上来几个?

注:完整答案会在星球揭秘。

问题1:std::variant构造函数会调用几个类型构造,1个?2个?n个?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
std::variant<std::string, int> a1;
std::variant<X, Y> a2;

相关问题:

  1. std::variant 的默认构造行为如何?
  2. std::variant 包含类型不具有默认构造函数时会发生什么?
  3. 如何指定 std::variant 的初始值类型?

问题2:下面代码可以正常运行吗?如果可以运行说明理由,否则给出几个解决方案。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct X {
    X(int v) : v_(v) {}
    int v_;
};

struct Y {
    Y(double v) : v_(v) {}
    double v_;
};

std::variant<X, Y> a1;

相关问题:

  1. 如何为 std::variant 添加具有默认构造函数的类型?
  2. std::variant 的类型列表中没有默认构造函数时,有哪些解决方案?
  3. 如何显式构造 std::variant 以避免默认构造问题?

问题3:什么是monostate,解决了什么问题?

相关问题:

  1. 如何在 std::variant 中使用 std::monostate
  2. std::monostate 的引入对 std::variant 的设计有哪些影响?
  3. 在什么情况下使用 std::monostate 是合适的?

问题4:defer_lock_t、try_to_lock_t、adopt_lock_t这三者的区别是什么?什么场景下使用?

相关问题:

  1. defer_lock_t 的使用场景和实现机制是什么?
  2. try_to_lock_t 如何处理互斥锁的尝试锁定?
  3. adopt_lock_t 在接管已有锁的所有权时有什么注意事项?
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 光城 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
什么?C/C++面试过不了?因为你还没看过这个!
(为了方便记忆可以想成)被 const 修饰(在 const 后面)的值不可改变,如下文使用例子中的 p2、p3。
杨源鑫
2020/06/04
3.9K0
并发编程(从C++11到C++17)
自C++11标准以来,C++语言开始支持多线程模型。借助多线程模型,我们可以开发出更好的并发系统。本文以C++语言为例,讲解如何进行并发编程。并尽可能涉及C++11,C++14以及C++17中的主要内容。
高性能架构探索
2023/06/13
1.1K0
并发编程(从C++11到C++17)
《C++并发编程实战》读书笔记(1):并发、线程管控
计算机系统中的并发包括任务切换与硬件并发,往往同时存在,关键因素是硬件支持的线程数。不论何种,本书谈论的技术都适用。
C语言与CPP编程
2023/08/10
4680
《C++并发编程实战》读书笔记(1):并发、线程管控
c++11多线程笔记
1 thread类 thread f; 线程等待join() 线程分离detach()
2019/05/25
5260
C++多线程unique_lock详解
       C++11中的unique_lock使用起来要比lock_guard更灵活,但是效率会第一点,内存的占用也会大一点。同样,unique_lock也是一个类模板,但是比起lock_guard,它有自己的成员函数来更加灵活进行锁的操作。
Ch_Zaqdt
2020/02/14
20.7K0
C++11中的互斥锁讲解
我们现在有一个需求,我们需要对 g_exceptions 这个 vector 的访问进行同步处理,确保同一时刻只有一个线程能向它插入新的元素。为此我使用了一个 mutex 和一个锁(lock)。mutex 是同步操作的主体,在 C++ 11 的 <mutex> 头文件中,有四种风格的实现:
泽霖
2023/11/26
3680
UNIX(多线程):04---Mutex互斥量
Mutex 又称互斥量,如果你要在代码里使用和互斥量相关的变量或者函数,你需要包含头文件mutex,std::mutex 是 C++11 中最基本的互斥量,std::mutex 对象提供了独占所有权的特性——即不支持递归地对 std::mutex 对象上锁,而 std::recursive_lock 则可以递归地对互斥量对象上锁。
用户3479834
2021/02/03
8530
【c++】一篇文章带你了解c++11的新特性&&c++11详解
在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。
用户10925563
2024/08/06
2720
【c++】一篇文章带你了解c++11的新特性&&c++11详解
C++11:多线程(1)
C++11现在也有了自己的多线程库,从C++11的线程库开始学习了解。 库主要分为:
何其不顾四月天
2023/03/10
5720
C++11-lambda表达式/包装器/线程库
捕捉列表,该列表总是出现在lambda函数的开始位置,编译器根据[]来判断接下来的代码是否为lambda函数,捕捉列表能够捕捉上下文中的变量供lambda函数使用
用户9645905
2022/11/30
1.2K0
C++11-lambda表达式/包装器/线程库
C++并发编程(C++11到C++17)
大型的软件项目常常包含非常多的任务需要处理。例如:对于大量数据的数据流处理,或者是包含复杂GUI界面的应用程序。如果将所有的任务都以串行的方式执行,则整个系统的效率将会非常低下,应用程序的用户体验会非常的差。
范蠡
2021/07/16
1.5K0
C++ 多线程 —— 锁
并发编程中经常需要考虑并发资源竞争读写的问题,因为多个流程同时修改、读取同一个资源时往往会发生超出预期的奇怪行为,因此我们的原则是并发执行任务但是资源读取的过程是清楚干净的。
为为为什么
2023/03/24
1.5K0
C++ 中文周刊 2024-07-21 第164期
七月邮件列表 https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/#mailing2024-07
王很水
2024/07/30
1380
C++ 中文周刊 2024-07-21 第164期
c/c++问题集五
C++11开始引入了多线程库<thread>,其中也包含了互斥锁的API:std::mutex
_咯噔_
2022/04/28
1.2K0
C++11知识点总结(全面解析C++11经常考到的知识点)
相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。相比较而言,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率。
海盗船长
2020/08/27
2.2K0
来聊聊C++中头疼的线程、并发
在一个应用程序(进程)中同时执行多个小的部分(线程),这就是多线程。多个线程虽然共享一样的数据,但是却执行不同的任务。
AI算法修炼营
2020/05/08
5.1K0
C++11的互斥包装器
在C++多线程中会经常用到mutex,在使用的时候lock后,有时候会忘记使用unlock进行解锁造成死锁,或者在lock和unlock之间代码异常跳出,导致程序无法执行到unlock造成死锁,因此在C++11中引入互斥体包装器,互斥体包装器为互斥提供了便利的RAII风格机制,本质上就是在包装器的构造函数中加锁,在析构函数中解锁,将加锁和解锁操作与对象的生存期深度绑定,防止使用mutex加锁(lock)后,忘记解锁(unlock)或者两者之间出现异常退出等造成死锁。
艰默
2023/11/17
2730
C++11的互斥包装器
【C++航海王:追寻罗杰的编程之路】C++11(四)
在C++98中,如果想要对一个数据集合中的元素进行排序,可以使用std::sort方法。
枫叶丹
2024/06/04
1710
【C++航海王:追寻罗杰的编程之路】C++11(四)
C++并发编程 - 互斥锁(lock_guard和unqiue_lock)
鲜衣怒马少年时,不负韶华行且知。 -- 鹊桥仙
开源519
2022/12/01
6400
C++11的简单介绍(下)
上述代码就是使用C++11中的lambda表达式来解决,可以看出lambda表达式实际是一个匿名函数。
ahao
2024/03/19
1580
C++11的简单介绍(下)
相关推荐
什么?C/C++面试过不了?因为你还没看过这个!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验