矢量中的非连续插入
non-consecutive insertion in vectors
是否可以像一样以非连续的方式在std::向量中插入值
std::vector<int> Myvector;
//Myvector[0] = 123;
//Myvecotr[2] = 456;
//Myvector[5] = 789;
有点像。你不能真的用这种方式插入,但你可以设置大小,只为你关心的人设置值。
如果你真的希望它是稀疏的(例如,在你的例子中,Myvector[1]、[3]、[4]根本不存在),那么就不存在。对于这样的东西,你可以使用std::map<int, int>
而不是向量。
当您的代码为一个尚不存在的元素使用索引时。换句话说,如果您的索引超过(>=)vector::size()
,那么您正在访问一个不存在的元素。唉,你最终会有不明确的行为。
std::vector<int> Myvector;
Myvector[0] = 123; // boom Myvector[0] was never created
所以你需要添加这些元素
// the boring way
Myvector.push_back(0);
Myvector.push_back(0);
Myvector.push_back(0);
Myvector.push_back(0);
Myvector[0] = 123; // set element 0 to 123
Myvector[2] = 456; // set element 2 to 456
或者如其他答案中所述,您设置大小(我更喜欢):
Myvector.resize(5);
或者从开始说明尺寸:
std::vector<int> Myvector(5); // 5 elements, all with the value of the default c'tor
如果您可以在开始时设置大小,那么您可以执行类似的操作
vector<int> iVec(5);
iVec[0] = 0;
iVec[2] = 2;
iVec[4] = 4;
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 预处理器:插入结构名称中的前一个行号
- 模板元程序查找相似的连续类型名称
- 在未初始化映射的情况下,将值插入到映射的映射中
- 如何在c++中只将键插入到bimap的一侧
- 如何将结构插入到集合中并打印集合的成员
- C++json插入数组
- Visual Studio 2019:插入多个C++风格的单行注释
- nlohmann-json将一个数组插入到另一个数组中
- 有效地使用std::unordered_map来插入或增加键的值
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 正在插入动态数组
- 如何将 n 个连续元素插入到元素类型不可复制的 std::vector 中?
- C++ 如何在 std::vector 中插入一个连续的间隔范围?
- 一种按排序顺序保持元素的数据结构,支持快速插入和计算连续元素之间的最大差异
- std::list c++是连续的,那么在序列中的任何位置插入和擦除操作都需要恒定的时间
- 矢量中的非连续插入
- 如何有效地将一系列连续整数插入std::集中
- STL矢量:当矢量容量因插入而增加时,在分配新的连续内存后,是否删除或保留旧的连续内存