如何在下面的程序中分配向量?

时间:2019-07-02 11:25:36

标签: c++

谁能告诉我这行在下面的程序res.back().insert(end(res.back()), begin(ity->second), end(ity->second));中正在做什么,如何 我想使用循环而不是上面的语句将元素分配给res,但是它将 如果您解释上述声明如何分配元素,并且对我有好处, 我该如何使用循环做同样的事情。

任务:https://leetcode.com/problems/vertical-order-traversal-of-a-binary-tree/

代码:https://ideone.com/E40syr

vector<vector<int>> verticalTraversal(TreeNode* r, vector<vector<int>> res = {}) {
    map<int, map<int, set<int>>> m;
    dfs(r, 0, 0, m);
    for (auto itx = m.begin(); itx != m.end(); ++itx) {
        res.push_back(vector<int>());
        for (auto ity = itx->second.begin(); ity != itx->second.end(); ++ity) {
            res.back().insert(end(res.back()), begin(ity->second), end(ity->second));
        }
    }
    return res;
}

1 个答案:

答案 0 :(得分:1)

res.back()

获取res中的最后一个元素。

.insert(end(res.back()),

在此位置插入一些东西。

begin(ity->second), end(ity->second)

要插入的迭代器范围。

);

您可以指定这是一个循环

for (auto itz : ity->second)
  res.back().push_back(itz);