[英]How to insert element at beginning of vector
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;
}
How can I insert an element at colourPos[1][0]
so that it shifts all elements, and also to the other vectors within the colourPos
vector? 如何在
colourPos[1][0]
插入一个元素,以便它移动所有元素,还移动到colourPos
向量中的其他向量?
eg [2][0]
, [3][0]
. 例如
[2][0]
, [3][0]
。
I tried 我试过了
colourPos[1][0].insert(0);
and just got "expression must have class type" 并得到“表达必须有类型”
This insertion works: 此插入有效:
vector<int> &cp1 = colourPos[1]; // & means reference to the subarray
cp1.insert(cp1.begin(), 2); // insertion
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.