c++-standard-library相关内容

C ++标准库的头在哪里

我想知道在文件系统上的什么地方可以找到C ++标准库的标头.特别是我正在寻找矢量模板的定义.我在/usr/include/和各个子目录中搜索.我也尝试过"locate vector.h",它带来了许多矢量的实现,但不是标准的.我想念什么? (分布是Gentoo) 背景:我正在剖析一个在大部分时间都对vector进行迭代的库,而gprof显示大部分时间都在 中花费了 std::vector ..
发布时间:2020-05-01 10:48:38 服务器开发

持有标准库容器的结构的POD含义

我遇到了这个问题最近.我的目标是了解C ++编译器如何查看包含标准库容器(例如std :: vector)的结构定义. Ben Voigt对链接问题的回答引用了C ++ 0x标准的以下内容: .... 普通类是具有普通默认构造函数(12.1)且可轻松复制的类. [注意:特别是,琐碎可复制或琐碎的类没有虚函数或虚基 类. — 尾注] 标准布局类是这样的类: 没有非 ..
发布时间:2020-04-27 05:04:29 C/C++开发

为什么标准容器要求allocator_type :: value_type为元素类型?

相关:弃用std :: allocator . 对于 std::vector 和 std::list (重点是我): 分配器,用于获取/释放内存并用于 构造/销毁该内存中的元素.类型必须符合 分配器的要求. 如果未定义行为,则为 Allocator::value_type与T 不同. 最后一句话对我来说没有意义.如果需要特定的value_type,难道不是只是重新分 ..

是否允许C ++标准库实现增强noexcept规范?

根据C ++标准,C ++标准库的实现是否可以增强标准定义的C ++标准库的方法和其他功能的noexcept规范? 例如,如果C ++标准将某些功能std::f指定为void f();,是否允许标准库实现将其作为void f() noexcept;实现? 解决方案 标准回答是: §17.6.5.12.1对异常处理的限制 [res.on.异常处理] C ++标准库中定义的任 ..
发布时间:2020-04-27 04:29:40 C/C++开发

重载std函数如std :: distance是否合理?

我有一个符合双向迭代器要求的自定义迭代器类(但不是随机访问)。但是,两个迭代器的距离也可以在恒定时间内找到。从概念上讲, it2 - it1 是有效的,但它+ = n 不是(这些运算符重载都没有实际实现)。 重载 std :: distance()以允许标准库算法有效地计算距离是否合理使用这个迭代器? 我发现有关篡改 std 命名空间的适当性的相互矛盾的信息。 解决方案 关于名 ..
发布时间:2018-11-15 23:03:59 C/C++开发

输入迭代器和只读前向迭代器之间有什么区别?

输入迭代器和只读前向迭代器之间有什么区别? 因为后者是只读的,所以它们显然不满足输出迭代器的要求。而且,正因为如此,它们才能有效地输入迭代器并提供额外的保证(如果有的话)。问题是,有什么额外保证? 我的猜测是前向迭代器是多次传递而输入迭代器不是,我是对的吗? 解决方案 是的,输入迭代器是一遍迭代器。你只能迭代它们一次,而前向迭代器是多遍的。 来自§24.2.3[input ..
发布时间:2018-11-15 21:28:45 C/C++开发

如何检查GDB中的std :: string没有源代码?

我试图调试一个没有可用源代码的程序,我需要看看它存储在std :: string中的内容。我一直在谷歌搜索和看这里,我已经找到了一些关于输出STL容器的信息,但它都是指变量,没有源或调试信息,我拥有的是类数据的内存偏移量。有没有办法做到这一点? 解决方案 每个 std :: string 实现有一个指向其中的原始字符的指针。对于 g ++ 4.x ,该指针位于偏移量 0 中。 如果您 ..
发布时间:2018-04-21 14:35:17 C/C++开发

在标准命名空间中声明名称的坏习惯?

我浏览了 Google C ++风格指南,发现了这个问题: “不要在命名空间std中声明任何内容,甚至不能声明标准库类的声明。在命名空间std中声明实体是未定义的行为,即不可移植。标准库,包括适当的头文件。“ 有人可以解释这意味着什么,为什么这是未定义的行为使用示例代码? 解决方案 有人能解释这意味着什么,为什么这是未定义的行为使用示例代码? p> 以下程序产生未定义 ..
发布时间:2016-12-14 14:26:24 C/C++开发

std :: stoi不被eclipse识别

在我的系统上,运行Windows 7 x64,Eclipse Luna和g ++ 4.9.2(通过cygwin安装),似乎std :: stoi从来没有被g ++声明。 根据文档,stoi是字符串库的一部分,所以显然我有 #include 。 此外,我知道stoi是在C ++ 11中引入的,并且我为我的编译器(g ++)设置了适当的标志,即使这看起来像是一个 IDE错误 ..
发布时间:2016-11-06 04:25:59 Java开发