问题标签 [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.
c++ - string::npos 在这段代码中是什么意思?
std::string::npos
以下代码片段中的短语是什么意思?
c++ - 了解 std::istream::read 的设计
std::istream
有原型应该通过调用得到实际读取的字节数istream& read (char* s, streamsize n)
,也可以从中知道istream::gcount()
其有效性。istream
ios::good
我正在与我的一位同事讨论我试图编写的另一个流类的实现,我说我可能会遵循这个设计;但他说,与其让用户每次都调用gcount,不如像这样读取原型istream& read (char* s, streamsize n, size_t &bytes_read)
,这样它就可以在一次调用中结束,而前者更笨拙。我无法为std
的设计选择辩护。背后的真正原因是istream::read
什么?
c++ - 这是 C++“移动”语义的正确用法吗?
今晚我一直在看一些我过去几天一直在处理的代码,并开始阅读移动语义,特别是 std::move。我有几个问题要问你们专业人士,以确保我走在正确的道路上,而不是做出任何愚蠢的假设!
首先:
1)最初,我的代码有一个返回大向量的函数:
鉴于“theVector”在此是临时的并且“丢弃”,我将函数修改为:
这个对吗?这样做有什么陷阱吗?
2)我注意到我有一个函数返回std::string
它自动调用移动构造函数。调试到返回字符串(谢谢,Aragorn),我注意到它称为显式移动构造函数。为什么有一个字符串类而不是向量?
我无需对此函数进行任何修改即可利用移动语义:
3)最后,我想做一些性能测试,是因为 std::move 语义而得到的惊人的快速结果还是我的编译器(VS2010)也做了一些优化?
(_getMilliseconds()
为简洁起见省略的实现)
结果显然很棒。result1 是一个标准作业,耗时 630 毫秒。第二个结果是 0ms。这是对这些东西的良好性能测试吗?
我知道其中一些对你们很多人来说是显而易见的,但我想确保在我对我的代码进行更深入的研究之前了解语义。
提前致谢!
c++ - c++ toupper - standard function?
Possible Duplicate:
Convert a String In C++ To Upper Case
Hi, I need a portable function to convert string in c++ to upper case. I'm now using toupper( char); function. Is it a standard function? If not, what it's the correct way to do it across platforms? Btw, is there any web / wiki where I can list all c++ standard functions? Thank you.
c++ - Python 标准库的 C/C++ 等效项
对于有用的数据结构和操纵器(例如,和)以及实用程序(例如,,和) ,我都非常依赖Python 的标准库,以跳过样板文件并完成工作。翻阅有关 C++ 标准库的文档,它似乎完全是关于数据结构的,几乎没有 Python 标准库中“包含的电池”的方式。collections
itertools
optparse
json
logging
Boost 库是我所知道的唯一一个类似于 Python 标准库的开源 C++ 库集合,但是虽然它确实具有正则表达式支持等实用程序库,但其中大部分也专用于数据结构。我真的很惊讶,即使是像保证解析和编写 CSV 文件这样简单的事情,使用Pythoncsv
模块变得非常简单,看起来也需要在 C++ 中自行滚动(即使您利用 Boost 的一些解析库)。
是否还有其他提供“电池”的 C++ 开源库?如果没有,作为 C++ 程序员,你会做什么:寻找单独的实用程序库(如果是,如何),或者只是自己开发(这看起来很烦人且浪费)?
c++ - 标准::原子 | compare_exchange_weak 与 compare_exchange_strong
我不确定是我不理解还是文档没有明确制定。
以下摘自最新草案(N3126,第 29.6 节):
备注:weak compare-and-exchange操作可能会虚假失败,即返回false,而操作前expect指向的内存内容与object相同,after与expected相同操作。[注意:这种虚假故障使得能够在更广泛的机器类别上实现比较和交换,例如负载锁定存储条件机器。虚假失败的结果是几乎所有弱比较和交换的使用都将处于循环中。
那么这是什么意思?
首先,它“可能”虚假失败?!为什么会失败?他们如何定义“可能”?
其次,我仍然不知道带有“_strong”和“_weak”后缀的函数有什么区别。有人可以解释其中的区别吗?
编辑: 这就是我在 libstdc++-implementation (atomic_0.h) 中发现的:
c++ - 如何让 IOStream 表现更好?
大多数学习 C 的 C++ 用户更喜欢使用printf
/scanf
系列函数,即使他们使用 C++ 进行编码也是如此。
虽然我承认我发现界面方式更好(尤其是类似 POSIX 的格式和本地化),但似乎压倒性的问题是性能。
看看这个问题:
似乎最好的答案是使用fscanf
,并且 C++ifstream
始终慢 2-3 倍。
我认为如果我们可以编译一个“技巧”存储库来提高 IOStreams 的性能,那会很棒,什么有效,什么无效。
需要考虑的要点
- 缓冲 (
rdbuf()->pubsetbuf(buffer, size)
) - 同步 (
std::ios_base::sync_with_stdio
) - 语言环境处理(我们可以使用精简的语言环境,还是完全删除它?)
当然,也欢迎其他方法。
注意:提到了 Dietmar Kuhl 的“新”实现,但我无法找到有关它的许多细节。以前的引用似乎是死链接。
c++ - “STL”和“C++ 标准库”有什么区别?
有人提请我注意这篇文章,声称(我在解释) STL 术语被滥用来指代整个 C++ 标准库,而不是取自 SGI STL 的部分。
(...) 它指的是“STL”,尽管事实上很少有人仍在使用 STL(它是在 SGI 设计的)。
C++ 标准库的一部分是基于 STL 的一部分,许多人(包括几位作者和臭名昭著的错误缠身的 cplusplus.com)仍然将这些部分称为“STL”。但是,这是不准确的;确实,C++标准从来没有提到过“STL”,两者在内容上也有区别。
(...) “STL”很少用于指恰好基于 SGI STL 的 stdlib 位。人们认为它是整个标准库。它被放在简历上。它具有误导性。
我对 C++ 的历史几乎一无所知,所以我无法判断这篇文章的正确性。我应该避免使用术语 STL 吗?或者这是一个孤立的观点?
c++ - 使用默认构造函数初始化 std::vector
我有一个类字段,它是一个 std::vector。我知道我希望这个向量包含多少个元素:N。如何用 N 个元素初始化向量?
c++ - 为什么标准 C++ 库全部使用小写?
只是好奇为什么 C++ 标准库使用所有小写和下划线而不是camelCase
命名PascalCase
约定。
就我个人而言,我发现在输入代码时后者更容易处理,但是使用前者有什么正当理由吗?