问题标签 [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 投票
3 回答
68 浏览

c++ - 比 C++ 标准严格要求的更多的公共成员函数

我在我的 C++ 实现中看到了一个公共std::istream_iterator::_M_equal成员函数(它用于将 istream 迭代器与其他标准全局函数进行比较)。该标准不要求用户可以使用该成员函数。

我想知道提供除标准要求之外的更多公共成员功能的实现是否仍然可以被视为“标准”。

0 投票
3 回答
3671 浏览

c++ - 为什么 Windows 和 Linux 的标准库函数名称不同?

我正在将 Windows 库移植到 Android(使用 GNU 标准 C++ 库选项 libstdc++-v3),并且 VC 和 GNU 库之间似乎存在许多命名差异,例如:

  • _stricmpstrcasecmp改为调用
  • _unlink叫做unlink
  • _scalb叫做scalbn
  • _finite叫做isfinite
  • _isnan叫做isnan
  • _itoa并且itoa在 GNU C++ 中似乎不存在
  • atoi确实存在,但不存在atoi64

VC 和 GNU 库的文档都暗示它们实现了“ISO”C++,例如,我可以从 VC2008 中得到一些警告,因为它们没有使用“ISO C++”名称,例如:“warning C4996: 'itoa':不推荐使用此项目的 POSIX 名称。改为使用符合 ISO C++ 的名称:_itoa。同样,GNU 的手册说“GNU 标准 C++ 库 v3 是实施 ISO 14882 标准 C++ 库的持续项目”。

那么这些库是如何以这些不同的名称结束的呢?我怎么知道哪些名字更“标准”?

此外,是否有任何地方的 libstdc++-v3索引,即库中所有函数的简单列表?我只能找到一本手册和似乎没有提供功能列表的“源文档”。

0 投票
4 回答
3998 浏览

c++ - 如何将 c++ std::map 与关联数据的自定义比较函数进行比较?

示例代码打印 False,因为 20 不等于 20.1。但是在我的应用程序中,我想将这些值视为相等,因为这些值之间的差异在允许的公差范围内。那么有什么方法可以为数据(不是Key)提供自定义比较功能吗?

任何帮助表示赞赏。

编辑:对不起代码中的错误。我复制了我试图找到这个问题的解决方案的代码。对于我的方案,键必须相等。

0 投票
0 回答
278 浏览

regex - 微软的Unicode 支持级别?

Microsoft Visual C++ 2010的std::wregex Unicode支持是什么样的?

  1. 它是否支持Unicode 字符类[:Nd:]等等。
  2. 支持排序规则,如 digraphs[.ae.]等等。

std::wregex我希望微软在 Unicode 方面的实现比boost更好?

我可以使用 ICU 库。但是ICU需要一个16MB的数据文件!我希望消除对 Windows 的依赖。

注意regex非宽版本,只支持ASCII字符!wregex所以我对正确实现 UTF-16 的宽版本的希望并不高。

0 投票
1 回答
4361 浏览

c++ - Clang 3.1 + libc++ 编译错误

我已经~/alt在 Ubuntu 12.04 上使用 GCC-4.6 成功构建并安装了(在前缀下)LLVM-Clang 主干(2012 年 4 月 23 日),然后使用这个 Clang-build 构建并安装了 libc++。当我想使用它时,我必须同时提供-lc++-libstdc++如下所示

编译f.cpp包含

如果我省略-lstdc++,我会收到链接错误

libc++应该完全替代libstdc++吗?

0 投票
6 回答
99752 浏览

c++ - C++ 文件处理:ios::app 和 ios::ate 之间的区别?

ios::ate写入文件和ios:app写入文件有什么区别。
在我看来,ios::app它使您能够在文件中移动,而ios::ate它只能在文件末尾读/写。它是否正确?

0 投票
1 回答
1183 浏览

c++ - MacPorts Clang 3.1 缺少标准库安装?

我正在尝试使用 MacPorts 安装的 clang 在 C++11 中初始化列表功能。编译这个简单的代码时:

我收到了这个错误:

它似乎包括来自系统 gcc (4.2) 的标头。而且我找不到任何特定于铿锵声的标题。我应该从 MacPorts 安装什么软件包才能使其正常工作?还是我需要安装和构建 clang 的 libc++?

0 投票
3 回答
23238 浏览

c++ - 将 nullptr 分配给 std::string 是否安全?

我正在做一个小项目,并遇到了以下情况:

我的问题是如果GetValue() 返回 NULLmyString变成一个空字符串?它是未定义的吗?还是会出现段错误?

0 投票
1 回答
226 浏览

c++ - 从标准输出读取的奇怪性能问题

我正在研究一些将用于测试其他可执行文件的代码。为方便起见,我将我的代码称为测试器,将被测试的代码称为客户端。测试器将生成客户端并向客户端的标准输入发送命令,并从客户端的标准输出接收结果。

我想先做一些性能测试,所以我写了一个非常简单的示例测试器和客户端。测试仪等待客户端将“READY”写入其标准输出,并作为响应将“GO”发送到客户端的标准输入。然后客户端将一些字节数写入标准输出,通过命令行标志配置,然后写入“\nREADY\n”,此时测试仪将再次写入“GO”。这会重复 10,000 次,然后我计算完成测试所需的时间和“吞吐量”,即 10,000 除以完成时间。

我运行了上述测试,让客户端在发送“READY”之前发送 0、10、100、1000、10000 和 100000 字节的数据。对于每个字节大小,我重复测试 10 次并取平均值。在我的笔记本电脑上运行 Ubuntu VMWare 实例时,我获得了每秒大约 100k GO/READY 对的吞吐量。性能相当稳定,几乎不依赖于客户端发送给测试仪的二进制字节数。然后我在运行 CentOS 的速度非常快的 24 核服务器上重复了测试。对于 0 字节有效负载,我观察到每秒只有大约 55k GO/READY 对,并且随着客户端发送的字节数增加,性能明显下降。当客户端在“GO”和“READY”之间发送 100k 字节时,吞吐量仅为每秒大约 6k 次操作。

所以我有三个问题

  1. 为什么相同的代码在更快的机器上运行得更慢
  2. 为什么虚拟机的性能与负载大小无关,而快速服务器上的性能却严重依赖负载大小?
  3. 我能做些什么来让服务器上的事情变得更快吗

一种可能的解释是我在快速服务器上重新编译了代码,并且它使用了不同版本的 C++ 库。VMWare 机器运行 Ubuntu 11.10,快速服务器运行 CentOS 6。两者都是 64 位机器。

相关测试器代码如下:

我还尝试了使用 read() 调用(来自 unistd.h)到 1MB 缓冲区并调用 memchr 以查找“\n”字符并查找 READY 的版本,但得到了相同的性能结果。

相关客户端代码如下:

任何帮助将不胜感激!

0 投票
1 回答
533 浏览

c++ - 我的 SFINAE 检查 std::map/std::vector 有什么问题?

我有一个简单的 SFINAE 场景来区分标准容器,例如std::map

当我用 实例化它时HasKeyType<std::vector<int> >::value,我得到

我完全被难住了。为什么HasKeyType不完整,为什么 SFINAE 不起作用?

如果我实例化实际上一个键类型()(B),我也会得到类似的错误。(C)HasKeyType<std::map<int,float> >int

g++ 版本:4.5.2(是的,我知道它很旧)