-1

我有一段时间没有做过 C++。

我试图获得一个向量向量来打印数据。我收到以下错误:

Segmentation fault (core dumped)

我正在使用在线编译器来运行代码。

#include <iostream>     // std::cout
#include <algorithm>    // std::for_each
#include <vector>       // std::vector

void myfunctiontwo (int i) {  // function:
  std::cout << ' ' << i;
}

void myfunction (std::vector<int> myvector) {  // function:
  for_each (myvector.begin(), myvector.end(), myfunctiontwo);
}

int main () {
  // create a vector of vectors. 
  std::vector< std::vector<int> > myvector; 

  // add some data
  myvector[0].push_back(10); 
  myvector[1].push_back(20);
  myvector[2].push_back(30);

  std::cout << "myvector contains:";
  for_each (myvector.begin(), myvector.end(), myfunction);
  std::cout << '\n';

  return 0;
}
4

2 回答 2

3

你的问题是推回:

myvector[0].push_back(10); 
myvector[1].push_back(20);
myvector[2].push_back(30);

向量myvector[0]myvector[1]myvector[2]尚不存在。如果你想myvector从 3 个向量开始,你可以像这样创建它:

std::vector< std::vector<int> > myvector(3);
于 2013-05-22T08:47:05.430 回答
0

正如您从以下链接 http://www.cplusplus.com/reference/vector/vector/operator[]/ 中看到的那样,operator[] 是访问元素,您无法使用它插入元素。插入对象使用 Assign , push_back 和 insert

于 2013-05-22T09:44:26.803 回答