在2D向量处输入值时出错

时间:2019-01-13 13:22:57

标签: c++

我正在使用Codeblock编写C ++代码。我试图在2D向量处输入值。但这是一个错误。我是C ++的新手,我已经在Google搜索过,但没有找到任何解决方案。这是我的代码

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector <vector<double>> customar_data;
    double value;
    cin >> value;
    customar_data[0][0].push_back(value);
    cout >> customar_data[0][0];

    return 0;
}

这是代码块编译器显示的内容

enter image description here

1 个答案:

答案 0 :(得分:0)

对于编译器的错误,请查看所涉及的表达式的类型。

  • customar_datavector <vector <double>>
  • customar_data[0]<vector <double>>
  • customar_data[0][0]double

当您请求非类类型push_back的成员函数(double)时,编译器会抱怨。


对于逻辑错误,请查看您的要求。您先从vector的空白vector<double>开始constructing。然后,您尝试access此空向量的第一个元素。您可以避免在构造过程中指定向量的大小,或者可以在不将元素添加到构造的向量中的情况下访问元素,但是您不能同时执行这两个操作。由于访问不存在的元素,向量的大小不会自动增加。

要访问的有效索引/下标是小于向量size()的非负整数。默认构造的向量的大小为零,因此没有有效的索引(您需要一个小于零的非负整数)。如果您知道构造最外层向量的大小,则可以指定它。

vector <vector<double>> customar_data(10);
// At this point, customar_data[0] through customar_data[9] can be used.
// Each of these elements is an empty vector of doubles.

如果您不知道最外层向量的大小,则需要在使用 之前添加每个元素。 (这是有意的单数;您可以添加一个元素,使用它,然后添加另一个。)

vector <vector<double>> customar_data;
customar_data.push_back(vector<double>()); // Adds an empty vector as the first element.
customar_data[0].push_back(20.0); // Adds a value to the vector that is the first element.
// At this point, customar_data[0][0] is valid and has the value 20.0.

您可能会发现emplace_back成员函数比push_back更方便,但让我们一次走一步。