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

c++ - 动态排序的 STL 容器

我对 STL 相当陌生,所以我想知道是否有任何可动态排序的容器?目前,我目前的想法是将向量与各种排序算法结合使用,但我不确定是否有更合适的选择,因为将条目插入排序向量的(大概)线性复杂性。

为了“动态地”澄清,我正在寻找一个可以在运行时修改排序顺序的容器 - 例如按升序对其进行排序,然后按降序重新排序。

0 投票
3 回答
538 浏览

visual-studio - stringstream 操纵器和 vstudio 2003

我正在尝试在 VC++ (VStudio 2003) 中使用 stringstream 对象,但是当我使用重载的 << 运算符尝试设置一些操纵器时出现错误。

我正在尝试以下操作:

这将无法编译(错误 C2593:'operator <<' 不明确)。
VStudio 2003 是否支持以这种方式使用操纵器?
我知道我可以直接在字符串流对象上设置宽度,例如 StrStream.width(2);
我想知道为什么更常用的方法不起作用?

0 投票
6 回答
3291 浏览

c++ - 删除 C++-STL/Boost 调试符号(...或不创建它们)

Linux/Gcc/LD - 工具链。

我想从库和可执行文件中删除 STL/Boost 调试符号,原因有两个:

  1. 大型程序的链接速度很慢
  2. 调试跳转到stl/boost代码,烦人

对于 1. 增量链接将是一个很大的改进,但 AFAIK ld 不支持增量链接。在 1999 年 dobb 博士的日记中有一种解决方法“伪增量链接”(不再在网络中,而是在archive.org中(想法是将所有内容放在动态库中,并将所有更新的目标文件放在第二个库中)首先加载)但这并不是一个真正的通用解决方案。

对于2.这里有一个脚本但是a)它对我不起作用(它没有删除符号),b)它非常慢,因为它在管道末端工作,而删除它会更有效前面的符号。

显然,其他调试符号应该保留在原处。

0 投票
19 回答
434472 浏览

c++ - 从 C++ 中的 std::string 中删除空格

从 C++ 中的字符串中删除空格的首选方法是什么?我可以遍历所有字符并构建一个新字符串,但是有更好的方法吗?

0 投票
6 回答
2888 浏览

c++ - C++ 是否在 std::set、std::map 等的恒定时间内执行 begin/end/rbegin/rend?

对于像 std::set 和 std::map 这样的数据类型,在对数时间内进行查找,是否需要实现来维护开始和结束迭代器?访问开始和结束是否意味着可能在对数时间内发生的查找?

我一直认为开始和结束总是在恒定的时间内发生,但是我在 Josuttis 中找不到任何证实。现在我正在做一些我需要对性能保持冷静的事情,我想确保覆盖我的基础。

谢谢

0 投票
15 回答
14432 浏览

c++ - STL 替代方案

我真的很讨厌使用 STL 容器,因为它们使我的代码的调试版本运行得非常缓慢。其他人使用什么来代替具有合理性能的调试构建的 STL?

我是一名游戏程序员,这在我从事的许多项目中一直存在问题。当你对所有东西都使用 STL 容器时,很难达到 60 fps。

我的大部分工作都使用 MSVC。

0 投票
3 回答
6997 浏览

c++ - 双索引的最佳容器

设置允许双索引的容器的最佳方法是什么(在 C++ 中)?具体来说,我有一个对象列表,每个对象都由一个键索引(每个键可能多个)。这意味着一个多图。然而,这样做的问题在于,它意味着查找对象位置的方法可能比线性查找更糟糕。我宁愿避免重复数据,所以让每个对象保持它自己的坐标并且必须在地图中移动自己会很糟糕(更不用说移动你自己的对象可能会在成员函数中间接调用你的析构函数!)。我宁愿一些容器通过对象指针和坐标维护索引,并且对象本身保证稳定的引用/指针。然后每个对象可以存储一个迭代器到索引(包括坐标),充分抽象,并知道它在哪里。Boost.MultiIndex 似乎是最好的主意,但它非常可怕,我不希望我的实际对象需要是 const。

你会推荐什么?

编辑:Boost Bimap 看起来不错,但它提供稳定的索引吗?也就是说,如果我更改坐标,对其他元素的引用必须保持有效。我想使用指针进行索引的原因是因为对象没有内在的顺序,并且指针可以在对象更改时保持不变(允许它在 Boost MultiIndex 中使用,IIRC 确实提供了稳定的索引)。

0 投票
16 回答
29981 浏览

c++ - STL vectors with uninitialized storage?

I'm writing an inner loop that needs to place structs in contiguous storage. I don't know how many of these structs there will be ahead of time. My problem is that STL's vector initializes its values to 0, so no matter what I do, I incur the cost of the initialization plus the cost of setting the struct's members to their values.

Is there any way to prevent the initialization, or is there an STL-like container out there with resizeable contiguous storage and uninitialized elements?

(I'm certain that this part of the code needs to be optimized, and I'm certain that the initialization is a significant cost.)

Also, see my comments below for a clarification about when the initialization occurs.

SOME CODE:

0 投票
8 回答
74638 浏览

c++ - std::map 插入或 std::map 查找?

假设您要在其中保留现有条目的地图。20% 的时间,您插入的条目是新数据。使用返回的迭代器执行 std::map::find 然后 std::map::insert 是否有优势?或者尝试插入然后根据迭代器是否指示记录已插入或未插入是否更快?

0 投票
10 回答
41889 浏览

c++ - 什么是 std::pair?

有什么std::pair用,我为什么要使用它,它boost::compressed_pair带来了什么好处?