如何在c ++中使用2D向量。 我写了下面的代码,但它没有工作。我得到运行时错误。
vector<vector<int> >itemsets;
int main()
{
itemsets.push_back(vector<int> ());
itemsets[0].push_back(1);
itemsets[1].push_back(2);
cout<<itemsets[0][0]<<itemsets[1][0];
return 0;
}
答案 0 :(得分:2)
你只在向量itemsets
中推了一个元素
所以你只能访问:itemsets [0]。它为您提供了第一个元素,即您推送的向量(让我们称之为vector1
)。
执行:
itemsets[0].push_back(1);
itemsets[0].push_back(2);
你将两个元素推送到vector1
。
如果我们将其表示为表格,它将如下所示:
col1 col2
row1 1 2
您可以使用[] []访问vector1
中的元素,其中第一个索引是一行,第二个索引是一列:
cout<<itemsets[0][0]<<itemsets[0][1];
编辑:
如果您想添加两行,则需要将vector2
添加到itemsets
:
itemsets.push_back(vector<int>()); //vector1
itemsets.push_back(vector<int>()); //vector2
itemsets[0].push_back(1);
itemsets[1].push_back(2);
cout<<itemsets[0][0]<<itemsets[1][0];
return 0;
您也可以使用std::vector
中的int
构造函数:
itemsets.push_back(vector<int>(1, 1)); //vector1 push 1 (first parameter is size of vector)
itemsets.push_back(vector<int>(1, 2)); //vector2 push 2
同样在C ++ 11中,您可以一次添加多个值:
itemsets.push_back(std::vector<int>({1, 2})); //vector1
itemsets.push_back(std::vector<int>({3, 4})); //vector2
std::cout<<itemsets[0][0]<<itemsets[0][1]<<itemsets[1][0]<<itemsets[1][1];
同样在C ++ 11中,您可以在一行内初始化矢量:
vector<vector<int> >itemsets = {{1}, {2}}; //add two rows: row1: 1, and row2: 2.