我正在尝试编写将数据推回到向量vector中的代码,但是当我尝试在循环中执行此操作时,我总是遇到分段错误。
我尝试了以下方法。我有两个循环,一个循环计数到5,另一个循环计数到第一个循环的位置。我正在尝试尝试在C ++中创建可变大小的2d向量。我的目标是每个子向量都有不同的大小。
for i in range(no_of_rows):
# Here Adj is the 2D matrix
contains = np.argwhere(np.all(Adj[i] >= Adj, axis = 1))
当我尝试推回时,出现分段错误。我在做什么错了?
提前感谢,蒂亚戈
答案 0 :(得分:5)
您需要先向vector<int>
添加v
,然后才能将元素添加到嵌套向量。
此外,您在内部循环中有一个错字。您正在使用++i
而不是++j
。
for (int i = 0; i < 5; ++i)
{
v.push_back(std::vector<int>());
for (int j = 0; j < i; ++j)
{
v[i].push_back(j);
}
}
另一种方法是在外部循环之前调整v
的大小。
int size = 5;
v.resize(size);
for (int i = 0; i < size; ++i)
{
for (int j = 0; j < i; ++j)
{
v[i].push_back(j);
}
}
答案 1 :(得分:4)
v
中没有元素,因此尝试通过v[i]
对其进行索引会给您带来段错误,因为它的未定义行为会为不存在的元素建立索引。
尝试在每次迭代中添加向量:
for (int i = 0; i < 5; ++i)
{
v.push_back(std::vector<int>{});
for (int j = 0; j < i; ++j)
{
v[i].push_back(j);
}
}