基于向量的数据格式的分段错误错误

时间:2018-03-28 01:25:41

标签: c++ vector

我是堆叠溢出和编码的新手。目前,我正在开发一种算法。在那里我使用compile project类型对象会说它是 a 。我正确地将支持的值推送到该向量中。我通过for循环测试了这些值,如下所示

vector<vector<double>>

但是当我传递给 a libarary时,我会收到Segmentation fault Error。

然后我从

的输出中创建了如下b
 vector<vector<double>> a = getValuesofA(); // 
    // The test loop
      for (unsigned int i = 0; i < a.size(); i++) {
         for (unsigned int y = 0; y < a.at(i).size(); y++) {
            double x = a.at(i).at(y);
            std::cout << x << " ";
        }
        std::cout << std::endl;
    }

 // Out put
0.278805 0 0 0 0
0 0 0 0 0
0 0.00838826 0 0 0
0 0.276585 0 0 0

当我将b传递给同一个库时,我没有收到错误。结果如预期。 我不知道a和b之间有什么区别。任何帮助表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:0)

   for (auto &m : a) {
        for (auto &n : m) {

所以m得到一个指向vector的指针,n得到一个指向double的指针。但是,在“b”中,双精度是指针,它们是值。简而言之,我怀疑如果你可以让它工作,你的图书馆将会起作用:

for (auto &m : a) {
        for (auto n : m) {

请注意缺少的“&amp;”。