stl相关内容

STL 映射到自身?

我想创建一个 std::map,其中包含一个 std::vector 迭代器,以实现一个简单的基于邻接列表的图形结构. 但是,类型声明让我很困惑:您似乎需要整个映射类型定义来获取所述映射的迭代器类型,如下所示: 地图int, 东西 >::iterator MyMap_it;//Something 应该是什么?地图 是否有某种部分映射迭代器类型我可以只使用键类型来获得,所以我可以声明完整映 ..
发布时间:2022-01-24 20:29:27 C/C++开发

“多组"&“多图"- 重点是什么?

正如问题所述......我不明白 multisets/multimaps. 那么,目的是什么? 解决方案 一些用例: 多地图 以邮政编码为密钥,所有拥有该邮政编码的人 以账户ID为key,该人/账户的所有未结订单 字典,每个关键字都有不同的解释 多组 本质上是一个带有键和整数计数的映射. 一个店铺的库存,所有产品都有自己的key和数量仍然可用的是价值 ..
发布时间:2022-01-24 20:28:47 C/C++开发

你更喜欢什么时候使用 std::list<T>而不是 std::vector<T>?

我自己从未使用过 std::list.我想知道当我们已经拥有 std::vector 时人们何时使用它,就像具有连续内存的数组一样.当我们需要顺序容器时,std::vector 似乎是一个完美的选择! 所以我的问题是 您究竟是什么时候更喜欢 std::list 而不是std::vector?为什么? 您什么时候更喜欢 std::vector 而不是std::list?为什 ..
发布时间:2022-01-24 20:25:52 C/C++开发

使用 STL 容器进行中位数计算时,正确的方法是什么?

假设我需要从 1000000 个随机数值序列中检索中位数. 如果使用任何但 std::list,我没有(内置)方法来对中值计算的序列进行排序. 如果使用 std::list,我无法随机访问值来检索排序序列的中间(中位数). 自己实现排序并使用例如是否更好?std::vector,还是使用std::list和使用std::list::iterator来for-loop-走到中间值? ..
发布时间:2022-01-24 20:24:29 C/C++开发

为什么在 C++ 中的容器中存储引用(不是指针)不起作用?

在我的程序中,我设置了一个 STL. set我的字符串; 为了提高我的代码效率,我将其更改为仅保留指针.(我不需要存储实际的字符串副本.) set我的字符串; 我已经读到,尽可能用引用替换指针是一种很好的做法.(当然,仅当不需要指针的实际功能时.) set 不过,后者给了我很多编译器错误.为什么不能使用引用作为容器元素? 解决方案 容器存储对象.引用不是对象. C++11 ..
发布时间:2022-01-24 20:22:04 C/C++开发

将地图值复制到 STL 中的向量

目前正在通过有效的 STL 工作.第 5 项建议使用范围成员函数通常比使用它们的单元素对应物更可取.我目前希望将地图中的所有值(即 - 我不需要键)复制到向量. 最干净的方法是什么? 解决方案 在这里你不能轻易地使用范围,因为你从 map 中得到的迭代器指的是一个 std::pair,你将用来插入的迭代器into a vector 是指存储在向量中的类型的对象,它是(如果您丢弃键)不 ..
发布时间:2022-01-24 20:21:19 C/C++开发

C++ 中范围的状态是什么?

有时我厌倦了所有这些 my_vector.begin(), my_vector.end() 噪音.去年在 boostcon 上,Andrei Alexandrescu 的主题演讲标题为 迭代器必须去(视频) 在 C++ 中引入范围有什么进展,所以我终于可以说 std::sort(my_vector) 了吗? 解决方案 Range in C++ 还是体验不足. 作为目前的实验实现,有 ..
发布时间:2022-01-24 19:49:25 C/C++开发

boost中的数字范围迭代器?

我知道 boost 中的范围迭代器,对于 this reference,似乎应该有一种简单的方法来做我想做的事,但这对我来说并不明显. 假设我想表示一个数字范围,0 到 100(包括或不包括),比如 range(0,100).我想做类似的事情: for_each(range(0,100).begin(), range(0,100).end(), do_something); do_som ..
发布时间:2022-01-24 19:48:28 C/C++开发

子类STL向量到基类向量的转换

我想知道是否可以将派生类值的向量转换为基类值的向量.具体来说,我希望能够将基类对象的向量传递给其形式参数采用基类向量的函数.似乎无法直接使用,因为以下代码示例会产生错误(使用 g++): #include A类{};B类:公共A {};无效函数(std::vectorobjs){}int main(int argc, char **argv) {标准::向量objs_b;o ..
发布时间:2022-01-24 16:16:14 C/C++开发

C++ std::unordered_map 复杂度

我已经阅读了很多关于 unordered_map (c++11) 时间复杂度在stackoverflow,但我还没有找到我的问题的答案. 假设按整数索引(仅举例): Insert/at 函数持续工作(平均时间),所以这个例子需要 O(1) std::unordered_map;我的地图 = {{ 1, 1},{ 100, 2},{ 100000, 3 }}; 我很好奇的是遍历存储在 ..
发布时间:2022-01-24 11:39:51 C/C++开发

我可以在向量中使用 const 来允许添加元素,但不能修改已添加的元素吗?

我对 this answer 的评论让我开始思考这些问题常量和排序.我玩了一下,将我的问题减少到以下代码: #include int main() {std::vector 五;} 不会编译 - 你不能创建一个 const int 的向量.显然,我应该知道这一点(并且在智力上我做到了),但我以前从来不需要创造这样的东西.但是,它对我来说似乎是一个有用的构造 ..
发布时间:2022-01-23 23:22:44 C/C++开发

调用临时对象的方法是否安全?

我有一个返回 char* 的函数.由于我必须连接一些字符串,所以我写了以下行: std::string other_text;//...func(("文本" + other_text).c_str()); 我知道我可以避免命名我想使用的字符串的问题.我只是想借此机会提出一个更笼统的问题:调用临时变量的方法是否安全?是否符合标准? 解决方案 调用临时变量的方法是安全的,但返回临时变量的c ..
发布时间:2022-01-23 21:13:32 C/C++开发

c++“没有匹配的调用函数"结构错误

我有将 GUID(unsigned long) 映射到结构的 C++ 代码. #include #include #include typedef 无符号长 GUID;枚举函数{加法器 = 1,减法器 = 2,乘数 = 3,方根 = 4};结构插件信息{GUID 向导;标准::字符串名称;功能函数;PluginInfo(GUID _guid, std: ..
发布时间:2022-01-23 20:59:11 其他开发