stl相关内容

std::copy 是否处理重叠范围?

将数据从一个范围复制到另一个范围时,您必须小心源范围和目标范围之间是否存在部分重叠.如果目标范围的开头与源范围的尾部重叠,则纯顺序副本将使数据出现乱码.C 运行时库除了 memcpy 之外还有 memmove 来处理此类重叠问题. 我假设 std::copy 像 memcpy 一样工作,因为它不考虑源区域和目标区域之间的重叠.如果您尝试使用 std::copy 在 std::vector 中 ..
发布时间:2022-01-20 18:16:43 C/C++开发

有效地将 std::unordered_set 的内容移动到 std::vector

在我的代码中,我有一个 std::unordered_set,我需要将数据移动到 std::vector 中.我在获取数据时使用 std::unordered_set 以确保在转换为 std::vector 之前只存储唯一值.我的问题是如何最有效地将内容移动到 std::vector ?移动数据后我不需要 std::unordered_set .我目前有以下: std::copy(set.beg ..
发布时间:2022-01-20 18:13:50 C/C++开发

返回没有副本的c ++ std::vector?

是否可以在不复制的情况下从函数返回标准容器? 示例代码: std::vector我的函数();...std::vectorb = MyFunc(); 据我了解,这会将返回值复制到一个新向量 b 中.使函数返回引用或类似的东西可以避免复制吗? 解决方案 如果您的编译器支持 NRVO,那么只要返回对象的函数满足某些条件,就不会进行复制.值得庆幸的是,这最终被添加到 Visual ..
发布时间:2022-01-20 18:13:25 C/C++开发

映射复杂的查找操作

我想做以下事情: 在字符串和任何类型的对象(可以是列表、整数 - 任何东西)之间定义映射. 地图的键可以如下(同样,这些值并不重要): “AAA/123"==> 1 “AAA/"==> 2 “BBB/" ==> 3 "CCC/*" ==> 4 “CCC/123"==> 5 现在,诀窍是我想在给定以下字符串的情况下找到正确的值: “AAA/123"应该给 1. “AAA/111" ..
发布时间:2022-01-20 17:31:25 C/C++开发

std::find 的优点

与容器的 find 方法相比,使用 C++11 的 std::find 有什么优势吗? 在 std::vector (没有 find 方法)的情况下 std::find 使用是一些智能算法还是简单地迭代每个元素的简单方法? 在 std::map 的情况下,您似乎需要传递一个 std::pair,即 value_typestd::map 的代码>.这似乎不是很有用,因为您通常希望找到键或 ..
发布时间:2022-01-20 17:27:53 C/C++开发

std::按成员查找对象

场景 我在使用 STL 时遇到了减速带,这似乎是一种正常的场景,在这里简化一下: 类人{字符串名称;诠释年龄;};矢量人们;添加人(人);字符串 s(“鲍勃");查找(people.begin(),people.end(),s); 问题 不幸的是find想比较整个类. 问题 有没有更好或更合适的方式来做到这一点“STL 方式"?建议的问题没有帮助,但我设法找到了几 ..
发布时间:2022-01-20 16:53:28 C/C++开发

是否使用 std::vector;C++ 中的对象可以接受,还是我应该使用替代方法?

我正在使用用户定义的位数(我持有一个 3 维位数组,因此大小按立方增加 - 假设不少于 512 位),并且需要分别翻转它们.现在,只是在计算机上,我使用 bool 类型,因为内存不是问题.我确实计划将来将代码移至微控制器,因此处理能力和内存要求可能是一个问题.不过现在,我只想要速度. 然后我从 C++ STLstd::bitset 对象a>,但我无法在运行时定义位集的大小.然后我发现 std ..
发布时间:2022-01-19 16:57:18 C/C++开发

替代向量<bool>

(希望)我们都知道,vector 已完全损坏,不能被视为 C 数组.获得此功能的最佳方法是什么?到目前为止,我想到的想法是: 使用 vector 代替,或 使用包装类并具有 vector 你们如何处理这个问题?我需要 c_array() 功能. 作为一个附带问题,如果我不需要 c_array() 方法,如果我需要随机访问,解决此问题的最佳方法是什么?我应该使用双端队 ..
发布时间:2022-01-19 16:49:35 C/C++开发

使用 STL/Boost 来初始化一个硬编码集合<vector<int>>

像这样 问题 已经问过了,我想使用 STL 初始化一个容器,其中元素以最干净的方式进行硬编码.在这种情况下,元素是一个双重嵌套的容器: set>一个; 我想(例如)将以下值放入: A = [[0,0,1],[0,1,0],[1,0,0],[0,0,0]]; C++0x 很好,使用 g++ 4.4.1.STL 更可取,因为我不将 Boost 用于代码的任何其他部分(尽管我不介意使用它的示例! ..
发布时间:2022-01-19 00:05:56 C/C++开发

避免在标准容器中默认构建元素

我有兴趣构建一个 uninitialized_vector 容器,它在语义上与 std::vector 相同,但需要注意的是,否则将使用将在没有初始化的情况下创建无参数构造函数.我主要对避免将 POD 初始化为 0 感兴趣.据我所知,没有办法通过将 std::vector 与特殊类型的分配器结合来实现这一点. 我想以与 std::stack 相同的方式构建我的容器,它适应用户提供的容器(在我 ..
发布时间:2022-01-18 23:59:10 C/C++开发

std::vector<unsigned int> 的初始化带有连续无符号整数的列表

我想使用一种特殊的方法来初始化一个 std::vector 在我用作参考的 C++ 书籍中描述(德国书籍 'Der C++ Programmer'Ulrich Breymann,以防万一).在那本书中有一节介绍了 STL 的序列类型,特别提到了 list、vector 和 deque.在本节中,他写道,这种序列类型有两个特殊的构造函数,即,如果 X 引用了这种类型, ..
发布时间:2022-01-18 23:57:59 C/C++开发

当所有元素都应该是唯一的时,为什么 STL 集有 count() ?

我可以理解multiset有count(),用于计算一个值出现的次数,因为元素可以在multiset中重复.但是当所有的值都已经是唯一的时候,设置 count() 有什么意义呢? 解决方案 count 是 关联容器要求(1). 每个关联容器都需要将其作为其接口的一部分提供,即使结果始终为 0 或 1,就像 std::set 的情况一样. (1) 这是描述关联容器概念的 SGI ..
发布时间:2022-01-17 18:52:03 C/C++开发

c++ 中查找方法的时间复杂度是多少?

set小号;s.插入(1);s.插入(2);...s.插入(n); 我想知道 s.find(k) 需要多少时间,其中 k 是 1..n 中的数字?我假设它是 log(n).这是正确的吗? 解决方案 O( log N ) 来搜索单个元素. §23.1.2 表 69 表达式返回注释复杂度a.find(k) 迭代器;返回一个指向对数的迭代器具有等效于 k 的键的 const_itera ..
发布时间:2022-01-17 18:51:31 C/C++开发

C++ 标准库是否有按插入顺序排序的集合?

C++ 标准库是否有“有序集"数据结构?所谓有序集,我的意思是与普通的 std::set 完全相同,但它会记住您将项目添加到其中的顺序. 如果不是,模拟一个的最佳方法是什么?我知道你可以做一些事情,比如有一组对,每对存储它添加的数字和实际值,但如果有更简单的解决方案,我不想跳过箍. 解决方案 没有一个单一的、同质的数据结构会具有这个属性,因为它要么是顺序的(即元素按插入顺序排列)要么 ..
发布时间:2022-01-17 18:51:21 C/C++开发

如何将对象插入 STL 集中

我正在尝试将对象 Point2D 插入到 Point2D 集中,但我无法做到,似乎该集适用于 int 和 char 但不适用于对象. 我需要帮助才能知道如何将对象插入集合中???假设我想按 x 值的升序对它们进行排序 类 Point2D{上市:Point2D(int,int);int getX();int getY();无效 setX(int);无效 setY(int);双 getScal ..
发布时间:2022-01-17 18:43:04 C/C++开发

需要按插入顺序设置 STL

如何按插入顺序将元素存储在集合中.例如. setmyset;myset.insert("堆栈");myset.insert("溢出"); 如果你打印,输出是 溢出堆 需要的输出: 堆栈溢出 解决方案 一种方法是使用两个容器,一个 std::deque 按插入顺序存储元素,另一个 std::set 以确保没有重复. 插入元素时,先检查是否在set中,如果是则丢弃;如果不存在,请将 ..
发布时间:2022-01-17 18:42:17 C/C++开发