问题标签 [std]
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++ - 将行拆分为整数
我有一个从中读取的文件,它包含一堆行,每行都有不同数量的整数,我无法将其拆分为整数向量的向量。
这是我当前的代码。
问题是所有整数都被读取为一行。
我究竟做错了什么?
c++ - 没有标准命名空间
我们有一个合理大小的 C++ 应用程序,在这个阶段已经很老了,所以它有一些怪癖。
这些怪癖之一是它如何处理使用预标准化标准库的 C++ 编译器。有一个头文件可以解决符合标准的编译器和这个不符合标准的编译器之间的任何差异。由于各种原因,我们不能/不想停止支持这个编译器。
您按如下方式使用它
这种方法有两个主要问题:
- 包含 std.h 的每个编译单元都必须编译大量不需要的代码(我们正在尝试尽可能减少编译时间)
- 全局命名空间几乎被 std 命名空间中的所有内容所污染。
作为代码清理项目的一部分,我真的很想解决这两点。第一个确实是这样做的更重要原因。
由于我们必须支持这个旧编译器,因此我们的代码将始终必须避免名称与其在标准库中公开的内容发生冲突,因此第 2 点并不真正相关,尽管我希望看到一个在 / 时有效的解决方案如果我们最终可以放弃对它的支持。
到目前为止,我的想法是将超级标题分解为一组较小的标题。例如 stl_vector、stl_iostream、stl_set 等。这样我们只能包含我们感兴趣的标准库的部分。这些文件名遵循标准头文件的模式,但具有易于搜索的前缀。因此,当需要转储有问题的编译器时,搜索前缀并将其删除会很简单。
我认为这将很容易解决问题 1。
我真正的问题是解决问题 2。我想做这样的事情
那么我们可以编写如下代码:
这几乎奏效了。在没有标准命名空间的地方,#define std 使 std::string 分解为 ::string 并且生活很好。
然后我用一个 .cc 文件尝试了这个,该文件使用了可怕的“使用命名空间 std;” 我得到一个编译错误,因为它变成了“使用命名空间”,所以这显然是行不通的。
现在显然我可以禁止人们编写“使用命名空间 std;”,但在标题中应该尽可能避免它,它有时在您大量使用大量 STL 类的 .cc 文件中很有用。
所以,最后,关于这个问题。是否有处理此问题的标准习语。或者,如果没有标准的方法来处理这个问题,那么您使用什么技巧来支持使用预标准标准库的编译器。
我曾想过使用预编译的头文件来解决编译速度问题,但是我们针对不同的编译器,并且在所有这些编译器上工作的努力可能意味着它不值得我们花时间去做。
建议我放弃不符合标准的编译器的答案可能很受欢迎,但不会被接受,因为这是我们现在不能做的事情。
c++ - Boost 文件系统编译错误
我正在编写一些利用 boost 文件系统库的代码。这是我的代码的摘录:
类型:
我得到一个编译错误:
此代码是输出批处理脚本的程序的一部分,该脚本使用 lame.exe 将文件转换为 mp3。为其设计的音乐库具有以下格式:
根/艺术家/歌曲
或者
根/艺术家/专辑/歌曲
this->m_input_path 是根路径。
我不确定我是否正确地解决了这个问题。如果我是,我该如何解决我得到的错误?
编辑:
我的代码现在是:
我现在得到的错误是:
c++ - C++ 代码运行时缺少标头,为什么?
我刚刚意识到我应该包含该功能#include<cstdlib>
所需的 by 。abs()
abs()
即使我忘记了重要的标题(#include<cstdlib>
),为什么这段代码仍然有效?
python - os.environ 在哪里初始化?
使用此代码,输出了许多键,但我预计没有输出:
这是来自 os.py 的代码:
os.environ 从哪里获得它的值?它在哪里初始化?
c++ - C++ std::queue::pop() 调用析构函数。指针类型呢?
我有一个std::queue
被包装为模板类以创建线程安全队列的方法。我有这个类的两个版本:一个存储值类型,一个存储指针类型。
对于指针类型,我无法在销毁时删除队列的元素。原因是我不知道如何安全地从队列中删除项目。
这个参考声明(空洞,所以我猜它实际上并没有声明它)从队列中删除元素的唯一方法是调用pop()
. 该参考资料还说pop()
调用了该项目的析构函数。
好吧,这会导致我的指针类型出现问题,因为它们实际上可能指向聚合,也可能不指向聚合。如果其中一个指向聚合,它们都会指向聚合,但由于包装器是模板化的,因此无法保证我们正在处理哪种类型(聚合或非聚合)。
那么,当pop()
调用析构函数时,会发生什么?如何确保所有内容都被删除并正确释放内存?
最后,我的解决方案是为 ARM9 使用旧版本的 GCC。我无法控制这个。我知道有些库有智能指针和容器可以在这里提供帮助,但它们对我来说是禁区。
c++ - 在结构的 c++ std 向量中搜索具有匹配字符串的结构
我敢肯定,我让这件事变得比需要的更难。
我有一个矢量...
...由以下模式的结构组成:
我正在尝试使用“std::find”搜索 mJointsVector 以通过其字符串名称定位单个关节 - 到目前为止还没有运气,但以下示例至少在概念上有所帮助:
谁能进一步指出我正确的方向?
c++ - 命名空间使用
我正在尝试以正确(或至少最好)的方式开始使用命名空间。
我尝试做的第一件事是避免放在using namespace xxx;
文件的开头。相反,我想using xxx::yyy
尽可能在本地。
这是一个说明这一点的小程序:
如果我省略了 or 行using std::cout;
,using std::endl
当我尝试使用cout
or时编译器会报错endl
。
srand
但是为什么,rand
和不需要这个time
?我很确定他们在 中std
,因为如果我尝试专门倒std::
在他们面前,我的代码工作正常。
c++ - std::map inizialitazion(仅一次)
我有一个使用 std::map 转换数据的函数
我的结构很轻,但图像可能很重。问题是每次我调用这个函数时,它都会创建很多 HistoParameter 对象,也许一个 switch case 更有效。第一个问题:我在制造垃圾?
第二种解决方案:
可以吗?更好的解决方案?
c++ - std::map 上的哪些操作是线程安全的?
假设我有:
以下函数线程安全吗?
即我想拥有这个在许多线程之间共享的巨大只读映射;但我不知道即使搜索它是否是线程安全的。
一切都先写入一次。
然后,多个线程从中读取。
我试图避免锁定以使其尽可能快。(我知道,yaya 可能过早优化)