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 vector 中的其他 vector ?

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

我试过了
colourPos[1][0].insert(0);

刚刚得到“表达式必须具有类类型”

最佳答案

insert 使用迭代器来指示插入的位置。在 colourPos[1] 的开头插入:

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

关于c++ - 如何在 vector 开头插入元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25649495/

10-09 06:39