2017-02-22 261 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