我正在使用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;
}
这是代码块编译器显示的内容
答案 0 :(得分:0)
对于编译器的错误,请查看所涉及的表达式的类型。
customar_data
是vector <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
更方便,但让我们一次走一步。