2017-02-22 210 views
0

矢量矢量C++ 嗨,我不理解嵌套矢量的语法,以模拟一个数组,我有下面的代码。矢量矢量C++

vector< vector< float> > myvector (n, vector < float> (2)); 

但我不太明白它是如何工作的,特别是在您指定的向量的大小和它的载体,如果你想调整大小,使我的矢量矢量已经指定尺寸哪能调整内部向量? 喜欢的东西改变vec [10] [2]vec [10] [5](改变第二维)

除了如何进行复印多维向量是这样的:

vector< int> myvector (myVectorToCopy, myVectorToCopy+myVectorToCopy.size()); 

但随着几个方面。 谢谢。如果您填写起来,并尝试添加更多他们

+1

你知道如何调整一个简单的矢量,比如'std :: vector a;'?你知道如何访问矢量元素吗?结合两者。 –

+1

你想要矩阵。你可以为他们找到C++库。 –

回答

0

vector<vector<float>>意味着你正在创建包含漂浮的载体的载体。构造函数参数意味着你正在创建尺寸n的一个向量,其中向量中的每个元素是具有大小2

浮标的向量要调整vector<vector<float>>

for (int i = 0; i < n; ++i) 
    A[i].resize(newSize); 

备选地可以使用:

A.assign(n,vector<float>(newSize)); 

为了使多维矢量使用构造函数的副本:

vector<vector<float>> B(A); 
0

向量C++会自动调整。如果你知道你的载体的确切大小,我建议切换到std::array,但是你将失去在运行时调整它们的能力。

std::vector::operator[]具有过载返回(你的情况Tstd::vector,嵌套一个),以用于创建模板的T的引用。如果你知道在外部载体的指数,你可以这样做:

myVec[0].resize(5); 

这将在0位置调整你的嵌套向量至5元。

复制是一样一样的访问:

std::copy(std::begin(VecToCopy), std::end(VecToCopy), std::begin(VecToFill)); 

使用std::begin最后可能不是你想要的,但它只是一个例子。

http://en.cppreference.com/w/cpp/algorithm/copy
http://en.cppreference.com/w/cpp/container/array