如何在矢量中访问索引而不进行分段
How to access an index in a vector without segfaulting
我知道这很简单,所以我提前道歉。
当尝试通过索引访问向量时,我正在分割。例如…
vector<float> some_vec;
int i = 0;
for (some iterator loop here)
{
//snip
some_vec[i] = some_float;
i++;
}
我做错了什么?
After
std::vector<float> some_vec;
向量为空。您不能访问其中的任何元素,因为没有任何元素。
如果你想把值放入其中,你需要使用push_back()
for (some iterator loop here)
{
//snip
some_vec.push_back(some_float);
i++;
}
或者,如果您提前知道大小,并且如果在向量中构造虚拟值很便宜(就像float
和其他内置值一样),您可以提前resize()
向量
some_vec.resize(42);
或者用适当数量的元素创建
std::vector<float> some_vec(42);
给定上述两个中的任何一个,然后可以访问向量中的元素0..41
。
在vector上调用resize()函数,然后调用push_back()来添加元素。在此之后,您可以使用索引访问元素。
可能是代码中其他地方的问题,我们看不到,但最有可能的是,您没有调用resize()
, push_back()
或insert()
, i
在矢量之外。使用some_vec.at(i) = some_float;
检查i
是否在向量的有效范围内。
我猜你的vector
是空的。使用push_back(some_float)
向其添加元素。
相关文章:
- 分段故障(堆芯转储)矢量
- 数组索引的值没有增加
- 数组的指针从不分段故障
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 在某些循环内使用vector.push_back时出现分段错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 在线编译器中的分段C++没有打印消息
- 查找最接近的大于当前数字的数字的索引
- 在C++中调整向量中的索引
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 当我的阵列太大时出现分段错误
- SIGSEGV, 分段错误. 而 printf() 数组索引的值
- 访问特定阵列位置/索引时出现分段错误
- 分段错误发生在索引离开C++数组边界之后
- 分段错误:为什么这里的数组索引越界了
- Fenwick树(二进制索引树)中的分段错误
- 使用索引缓冲区对象时出现奇怪的分段错误
- 带有arry索引(而非迭代器)的std会导致分段错误
- 如何在矢量中访问索引而不进行分段
- 试图通过指针索引对象数组的数组时出现分段错误