stl相关内容

C++STL堆栈与FORWARD_LIST

我有一个用例,其中我需要以不特定的顺序存储一定数量的uint16_t变量(尽管变量的实际类型并不相关)。我已决定求助于STL来寻找最符合我需要的容器。 容器中的对象可以从容器中取出以供使用,然后放回容器中。在某种程度上,机械师可能只有一盒螺丝刀,而不是把螺丝刀放在口袋里。容器不需要对存储的对象执行任何分类,取出什么并不重要-唯一的要求是知道容器中是否还有任何东西。 我的眼睛转向std: ..
发布时间:2022-09-24 19:16:23 C/C++开发

为什么std::VECTOR要初始化其内容?

假设我想创建一个vector并在其上调用iota: std::vector v(1000); std::iota(begin(v),end(v),0); 向量实际上是在构造函数中0初始化的。问题与以下情况相同: std::vector v; v.resize(1000); 我可以使用reserve,但无法调用iota。而且我也看不到不零初始化的好办法(也许是 ..
发布时间:2022-08-23 13:07:11 C/C++开发

在C++20中,如何编写连续的迭代器?

C++20显式支持std::contiguous_iterator_tag。一些STL算法(例如std::copy)可以在连续迭代器上执行得更好。但是,我不清楚程序员应该如何访问此新功能。 为了便于讨论,我们假设我们有一个完全符合C++20的库实现。我想编写尽可能最简单的连续迭代器。 Here's my first attempt. #include cl ..
发布时间:2022-08-15 21:11:31 C/C++开发

STL+有序集+无重复

我需要有一个没有重复项的有序值集。 那么,什么是最快/最好的方法: 1-创建一个向量,对其进行排序并删除重复项? 2-使用一种“排序”向量(如果存在)? 哪个更有效率? 推荐答案 为什么不使用std::set? ..
发布时间:2022-04-05 17:10:58 C/C++开发

如何在C++中判定映射中是否存在值

我了解std::map是(键、值)对。 我想搜索映射的值。假设我想要在std::map的值中找到最高值。我怎么能做到这一点? 例如,让我考虑这样一张地图: John->100 Jeffrey->200 克里希纳->147 我认为会与此类似,但我不确定。 for (auto it=m.begin(); it!=m.end(); it++) { ..
发布时间:2022-03-31 22:59:28 C/C++开发

C++17中std::unary_function的等效替代是什么?

以下代码给我带来了一些问题,尝试构建并得到错误: “unary_function基类未定义”并且“unary_function”不是std的成员“ std::unary_function已在C++17中删除,那么等效版本是什么? #include struct path_sep_comp: public std::unary_function ..
发布时间:2022-02-25 20:06:12 C/C++开发

std::vector 比普通数组慢很多吗?

我一直认为 std::vector 被“实现为数组"是普遍的智慧,等等等等.今天下楼测试了一下,好像不是这样: 以下是一些测试结果: UseArray 在 2.619 秒内完成UseVector 在 9.284 秒内完成UseVectorPushBack 在 14.669 秒内完成整个过程在 26.591 秒内完成 这大约慢了 3 到 4 倍!并不能真正证明“vector 可能会慢几纳秒 ..
发布时间:2022-01-31 08:50:00 C/C++开发

是否有 std::function 的独立实现?

我正在开发嵌入式系统,因此代码大小是一个问题.使用标准库将我的二进制大小增加了大约 60k,从 40k 增加到 100k.我想使用 std::function,但我不能证明它是 60k 的.是否有我可以使用的独立实现,或类似的东西?我正在使用它在 c++ 11 中使用绑定变量在成员函数中隐式转换 lambda. 解决方案 60k 来自编译器添加的异常处理,因为 std::function ..
发布时间:2022-01-25 12:30:11 C/C++开发

嵌入式 C++:是否使用 STL?

我一直是嵌入式软件工程师,但通常在 OSI 堆栈的第 3 层或第 2 层.我不是一个真正的硬件人.我一般一直做电信产品,通常是手机/手机,这通常意味着类似 ARM 7 处理器的东西. 现在我发现自己处于一个更通用的嵌入式世界,在一家小型初创公司中,我可能会转向“不那么强大"的处理器(这是主观的一点)——我无法预测是哪个. 我已经阅读了很多关于在嵌入式系统中使用 C++ 中的 STL 的 ..
发布时间:2022-01-25 12:07:59 C/C++开发

排序谓词的链接(例如,对于 std::sort)

您可以将函数指针、函数对象(或 boost lambda)传递给 std::sort 以定义要排序的容器元素的严格弱排序. 但是,有时(我已经多次提到这一点),您希望能够链接“原始"比较. 一个简单的例子是,如果您对代表联系人数据的对象集合进行排序.有时您会希望按 姓、名、区号 进行排序.其他时候 名字、姓氏 - 还有其他时候 年龄、名字、区号 ...等 现在,您当然 ..
发布时间:2022-01-25 09:31:26 C/C++开发

我应该使用哪个 STL 容器?C++

我有一个对象“列表",我想从中随机取出对象并将其推到此列表的前面.只会执行这种操作.所以我不需要快速访问列表末尾,只需要它的前面和对任何其他地方的平均访问. 哪个容器最适合这个?我在考虑std::vector,但我读到insert 操作效率不高.然后我想出了 std::deque 因为它可以快速访问前面,但是 erase 在特定位置方法的效率如何? 提前感谢您的帮助. 解决方案 ..
发布时间:2022-01-24 21:26:45 C/C++开发

带有预分配缓冲区的循环缓冲区?

是否有任何库具有可与预分配缓冲区一起使用的循环缓冲区类?我查看了 Boost::circular_buffer,但似乎它的所有构造函数都需要一个分配器.我不想重新发明循环缓冲区类,但必须使用预先分配的缓冲区.我想要类似的东西: 字符缓冲区[1000];//预分配的缓冲区.循环缓冲区类 cb;//提供接口作为循环缓冲区的类.cb.attach(缓冲区,1000);//将预分配的缓冲区附加到循环缓冲 ..
发布时间:2022-01-24 21:26:39 C/C++开发

不可复制类型的整数可索引 RAII 容器

是否有标准容器具有与 vector 相同的通用 API,但通过直接默认构造填充新位置? 背景: 我有一个不允许复制但有一个默认构造函数的类型,我真正想做的是: vector袋子(一些尺寸);//使用 bag[i] 的返回;//包&内容得到正确清理. 但是,这不起作用,因为 vector(int) 是根据默认构造一个对象然后将其复制到每个新位置来实现的. 编辑:不是 ..
发布时间:2022-01-24 21:26:11 C/C++开发