问题标签 [c++-standard-library]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6271 浏览

c++ - 即使使用多核上下文,是否有任何 std::chrono 线程安全保证?

首先,我假设调用 std::chrono 的任何函数都保证是线程安全的(如果从不同的线程调用,没有未定义的行为或竞争条件或任何危险)。我对么?

接下来,例如在 Windows 上,有一个众所周知的与多核处理器相关的问题,它强制时间相关系统的某些实现允许强制特定内核获取任何时间信息

我想知道的是:

  1. 在标准中使用 std::chrono 是否可以保证不会出现这样的问题?
  2. 还是实现定义
  3. 或者是否有明确的缺乏保证意味着在 Windows 上你最好总是从同一个核心获得时间?
0 投票
6 回答
73993 浏览

c++ - C++标准库的头文件在哪里

我想知道在我的文件系统上哪里可以找到 C++ 标准库的头文件。特别是我正在寻找向量模板的定义。我在 /usr/include/ 和各种子目录中进行了搜索。我还尝试了“locate vector.h”,它提出了许多向量的实现,但不是标准的。我错过了什么?(发行版是Gentoo)

背景:我正在分析一个库,该库大部分时间都在迭代向量,而 gprof 表明大部分时间都花在了

这可能是 std::vector::push_back 内部发生的情况,但我不确定。

0 投票
5 回答
995 浏览

c++ - 为什么标准库容器没有共同的基础?

只是出于兴趣...

如果我要设计一个容器库,我肯定会从一个公共基类派生它们,该基类将具有(可能是抽象的)方法声明,如size()insert()

标准库容器是否有充分的理由不这样实现?

0 投票
4 回答
21052 浏览

c++ - 字符数组作为 C++ 映射中的值

我想定义类似的东西

上面的声明被 c++ 编译器接受并且没有抛出错误但是当我做这样的事情时

我得到错误:

定义一个固定大小的字符数组对我来说很重要,因为它优化了我的网络流操作。有没有办法实现它?我不想使用char *or std::string

0 投票
3 回答
16232 浏览

c++ - C++:字符串运算符重载

我可以重载现有类中的现有函数/运算符吗?

我试图做:

但这给了我错误:

我怎样才能做到这一点?还是我不能?

0 投票
3 回答
1287 浏览

c++ - 拆分字符串 C++

可能重复:
在 C++ 中拆分字符串

我有一个复制文件的程序。

我有一个字符串,它是一个目录路径,但它可能只是一个文件名。例如:

rootdirname\childdirname\filename.ini

或者它可能是:

filename.ini

我对 C++ 还是很陌生,我需要拆分字符串\并使用MKDir.

有人知道如何拆分字符串吗?

0 投票
2 回答
421 浏览

c++ - 使用 std::map [] 运算符交换与分配(常量问题)

我目前在 a 上使用 [] 运算符std::map

没有什么太疯狂了。但是,我的值包含一个 const 公共成员:

在不深入了解我的应用程序的细节的情况下,我们想要保留 const 成员。鉴于此,我假设这样map[key] = value做是先删除现有值,然后插入新值:

但是,实际上似乎正在发生的是operator []返回对值的引用,因此尝试使用 = 赋值或移动运算符或其他东西。显然,这是行不通的,因为无法重新分配成员。现在,我可以只调用擦除然后插入自己,但我想知道是否有一种方法可以map[key] = value使用这种“交换”技术。

0 投票
2 回答
773 浏览

c++ - 为什么 unordered_set 操作(如 count 和 erase)会返回 size_type?

显然,unordered_set::eraseunordered_set::count返回一些不是严格布尔值的东西(从逻辑上讲,我不是在谈论实际类型)。

链接页面读取第三版擦除:

删除具有键值键的元素

这有一种语气,表明给定键的元素可能不止一个。它没有明确说明这一点,但听起来很像。
现在,集合的要点,即使是无序的集合,也是每个元素都有一次。

标准库承认该bool类型的存在并将其用于布尔值,如unordered_set::empty(). 那么,size_type在上述情况下,返回有什么意义呢?即使存在哈希冲突,容器也应该区分具有不同键的元素,对吧?我还能依靠吗?

0 投票
4 回答
157 浏览

c++ - c++ operator() 行为

考虑一下,我使用 std::for_each 和带有重载 operator() 的对象来积累一些关于向量内容的数据:

输出

为什么是non-zero elements0?

0 投票
2 回答
2021 浏览

c++ - C++ 2011 中的 nextafter 与 nexttoward 函数?

C++ 2011 标准库的 nextafter 和 nexttoward 函数有什么区别?