问题标签 [stl]

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 投票
10 回答
65141 浏览

c++ - 我应该存储整个对象还是指向容器中对象的指针?

从头开始设计一个新系统。我将使用 STL 来存储某些长寿命对象的列表和映射。

问题:我是否应该确保我的对象具有复制构造函数并将对象的副本存储在我的 STL 容器中,还是自己管理生命和范围并将指向这些对象的指针存储在我的 STL 容器中通常更好?

我意识到这在细节上有些不足,但我正在寻找“理论上的”更好的答案(如果存在),因为我知道这两种解决方案都是可能的。

玩指针的两个非常明显的缺点: 1) 我必须自己在 STL 之外的范围内管理这些对象的分配/释放。2) 我无法在堆栈上创建临时对象并将其添加到我的容器中。

还有什么我想念的吗?

0 投票
3 回答
2249 浏览

c++ - Unable to link to shared library

I'm building a shared library with g++ 3.3.4. I cannot link to the library because I am getting

Which c++filt describes as

I thought this might have come from using hash_map, but I've taken that all out and switched to regular std::map. I am using g++ to do the linking, which is including -lstdc++.

Does anyone know what class would be instantiating this template? Or even better, which library I need to be linking to?

EDIT: After further review, it appears adding the -frepo flag when compiling has caused this, unfortunately that flag is working around gcc3.3 bug.

0 投票
6 回答
6750 浏览

c++ - 在 Windbg 中调试 C++ STL 容器

Windbg 粉丝声称它非常强大,我倾向于同意。但是在调试 STL 容器时,我总是卡住。如果变量在堆栈上,!stl扩展有时会计算出来,但是当具有复杂类型(例如std::vector<TemplateField, std::allocator<TemplateField> >)的容器在堆上或其他结构的一部分时,我只是不知道如何查看其内容。

欣赏任何提示,指针。

0 投票
3 回答
1729 浏览

c++ - 帮助改进此 INI 解析代码

这是我为这个问题想出的简单的东西。我对它并不完全满意,我认为这是一个帮助改进我对 STL 和基于流的编程的使用的机会。

您将如何改进这一点?请不要推荐替代库 - 我只想要一个简单的方法来从 INI 文件中解析出一些配置字符串。

0 投票
4 回答
7111 浏览

c++ - 使用 boost::random 作为 std::random_shuffle 的 RNG

我有一个程序使用来自 boost::random 的 mt19937 随机数生成器。我需要做一个 random_shuffle 并希望为此生成的随机数来自这个共享状态,这样它们就可以确定 mersenne twister 先前生成的数字。

我试过这样的事情:

但是我收到一个模板错误,用 rand 调用 random_shuffle。但是,这有效:

可能是因为它是一个实际的函数调用。但很明显,这并不能保持原始梅森捻线机的状态。是什么赋予了?在没有全局变量的情况下,有什么方法可以做我想做的事情吗?

0 投票
8 回答
86470 浏览

c++ - UTF8 到/从 STL 中的宽字符转换

是否可以以独立于平台的方式将 std::string 中的 UTF8 字符串转换为 std::wstring ,反之亦然?在 Windows 应用程序中,我将使用 MultiByteToWideChar 和 WideCharToMultiByte。但是,代码是为多个操作系统编译的,我仅限于标准 C++ 库。

0 投票
4 回答
6113 浏览

c++ - 磁盘支持的 STL 容器类?

我喜欢使用 STL 开发算法,但是,我经常遇到这个问题,即我的数据集对于堆来说太大了。

我一直在寻找 STL 容器和磁盘支持的算法的替代品,即存储在磁盘上而不是堆上的数据结构。

一位朋友最近向我指出了stxxl。在我过多参与之前......我应该考虑是否有其他可用的磁盘支持的 STL 替代品?

注意:我对持久性或嵌入式数据库不感兴趣。请不要提及 boost::serialization、POST++、关系模板库、Berkeley DB、sqlite 等。我知道这些项目并在它们适合我的目的时使用它们。

更新:有几个人提到了内存映射文件和使用自定义分配器,顺便说一句,这是很好的建议,但我会指出他们在这里的讨论中,大卫亚伯拉罕建议磁盘支持的容器需要自定义迭代器。这意味着自定义分配器方法不太可能奏效。

0 投票
15 回答
27416 浏览

c++ - 如何检测 std::map 循环中的最后一次迭代?

我试图找出最好的方法来确定我是否处于地图上循环的最后一次迭代中,以便执行以下操作:

似乎有几种方法可以做到这一点:随机访问迭代器、distance函数等。规范方法是什么?

编辑:地图没有随机访问迭代器!

0 投票
10 回答
30308 浏览

c++ - 如何在 C++ 中进行柯里化?

什么是咖喱?

如何在 C++ 中进行柯里化?

请解释 STL 容器中的活页夹?

0 投票
7 回答
7127 浏览

c++ - 从 const 映射中读取的惯用 C++

对于一个std::map<std::string, std::string> variables,我想这样做:

唯一的问题是,在这种情况下variablesconst,所以operator[]不会工作:(

现在,有几种解决方法;抛弃const,使用variables.count("a") ? variables.find("a")->second : std::string()甚至制作一个包装它的函数。在我看来,这些都不如operator[]. 我该怎么办?有没有标准的方法(漂亮地)?

编辑:只是为了说明你们都不想给出的答案:不,在 C++ 中没有方便、美观、标准的方法来做到这一点。我将不得不实现一个支持功能。