首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >向量的向量初始化?

向量的向量初始化?
EN

Stack Overflow用户
提问于 2010-06-17 19:33:44
回答 4查看 34.5K关注 0票数 17

有没有一种方法可以像初始化矩阵一样快速地初始化向量的向量?

代码语言:javascript
复制
typedef int type;

type matrix[2][2]=
{
{1,0},{0,1}
};

vector<vector<type> > vectorMatrix;  //???
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-17 19:49:33

对于单个向量,您可以使用以下命令:

代码语言:javascript
复制
typedef int type;
type elements[] = {0,1,2,3,4,5,6,7,8,9};
vector<int> vec(elements, elements + sizeof(elements) / sizeof(type) );

在此基础上,您可以使用以下方法:

代码语言:javascript
复制
type matrix[2][2]=
{
   {1,0},{0,1}
};

vector<int> row_0_vec(matrix[0], matrix[0] + sizeof(matrix[0]) / sizeof(type) );

vector<int> row_1_vec(matrix[1], matrix[1] + sizeof(matrix[1]) / sizeof(type) );

vector<vector<type> > vectorMatrix;
vectorMatrix.push_back(row_0_vec);
vectorMatrix.push_back(row_1_vec);

c++0x中,您可以使用与数组相同的方式初始化标准容器。

票数 7
EN

Stack Overflow用户

发布于 2010-06-17 19:58:29

代码语言:javascript
复制
std::vector<std::vector<int>> vector_of_vectors;

然后,如果您想要添加,可以使用以下过程:

代码语言:javascript
复制
vector_of_vectors.resize(#rows); //just changed the number of rows in the vector
vector_of_vectors[row#].push_back(someInt); //this adds a column

或者你可以这样做:

代码语言:javascript
复制
std::vector<int> myRow;
myRow.push_back(someInt);
vector_of_vectors.push_back(myRow);

因此,在您的情况下,您应该能够说:

代码语言:javascript
复制
vector_of_vectors.resize(2);
vector_of_vectors[0].resize(2);
vector_of_vectors[1].resize(2);
for(int i=0; i < 2; i++)
 for(int j=0; j < 2; j++)
   vector_of_vectors[i][j] = yourInt;
票数 4
EN

Stack Overflow用户

发布于 2010-06-17 19:57:06

在C++0x中,我认为您可以使用与matrix相同的语法。

在C++03中,您必须编写一些繁琐的代码来填充它。Boost.Assign也许能够稍微简化它,使用类似以下未经测试的代码:

代码语言:javascript
复制
#include <boost/assign/std/vector.hpp>

vector<vector<type> > v;
v += list_of(1)(0), list_of(0)(1);

甚至是

代码语言:javascript
复制
vector<vector<type> > v = list_of(list_of(1)(0))(list_of(0)(1));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3061247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档