2014-09-03 35 views
-2
vector<int>grid = { 0, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 3, 3, 3, 2, 2, 4, 1, 5, 3, 3, 6, 2, 6, 4, 5, 5, 5, 3, 6, 2, 6, 4, 4, 5, 5, 5, 6, 6, 6, 4, 7, 7, 8, 5, 8, 8, 8, 4, 7, 7, 8, 8, 8, 8, 8, 4, 7, 7, 7, 7, 8, 8, 8 }; 
const size_t gridSize = end(grid) - begin(grid); 
int maxColour = *max_element(begin(grid), end(grid)); 

vector<vector<int>> colourPos(maxColour+1); 

for (size_t i = 1; i < gridSize; ++i) 
    colourPos[grid[i]].push_back(i); 

for (size_t i = 0; i < colourPos.size(); ++i) { 
    std::cout << (i + 1) << ": "; 
    for (int p : colourPos[i]) 
     std::cout << p << ' '; 
    std::cout << std::endl; 
} 

我怎樣才能在colourPos[1][0]使得它轉移所有元素插入的元素,並且還向colourPos矢量內的其它矢量?如何在矢量的開頭插入元件

例如[2][0],[3][0]

我試圖

colourPos[1][0].insert(0); 

和剛剛「表達必須具有類類型」

+0

DR; TL;這是'std :: vector :: insert'的簡單外觀[ – 101010 2014-09-03 16:38:14

+0

@ 40two我試過了,我不明白如何正確使用它。 – mrmike 2014-09-03 16:39:18

+0

聽起來好像你只是想在'colourPos [1]'中插入一個全新的矢量?你嘗試過'colourPos.insert(colourPos.begin()+ 1,vector ())'? – cdhowie 2014-09-03 16:40:57

回答

10

insert使用一個迭代器來指示插入。爲了插入在colourPos[1]開頭:

colourPos[1].insert(colourPos[1].begin(), 0); 
2

這種插入的工作原理:

vector<int> &cp1 = colourPos[1]; // & means reference to the subarray 
cp1.insert(cp1.begin(), 2);  // insertion