C++:在一个循环中迭代一个列表和一个无序的_映射 C++中,我有一个WSCORT列表和一个无序的WStk/WScript映射。 std::list<std::wstring> m_L; std::unordered_map<std::wstring, std::wstring> m_UM;

C++:在一个循环中迭代一个列表和一个无序的_映射 C++中,我有一个WSCORT列表和一个无序的WStk/WScript映射。 std::list<std::wstring> m_L; std::unordered_map<std::wstring, std::wstring> m_UM;,c++,list,iterator,unordered-map,C++,List,Iterator,Unordered Map,使用C++20的范围或库,您可以非常轻松地做到这一点: int main() { std::list<std::string> l_str = {"a", "b", "c"}; std::unordered_map<std::string, std::string> m_str = {{"d", "dd"}, {"e", "ee"}}; using namespace ranges::views; // for concat(), all() a

使用C++20的范围或库,您可以非常轻松地做到这一点:

int main() {
    std::list<std::string> l_str = {"a", "b", "c"};
    std::unordered_map<std::string, std::string> m_str = {{"d", "dd"}, {"e", "ee"}};

    using namespace ranges::views; // for concat(), all() and keys()
    for (auto& e : concat(all(l_str), keys(m_str))) {
        std::cout << e << ' ';
    }
}
输出:a b c e d

请注意,我用std::string替换了std::wstring,但这不会在演示中产生任何实际差异。

使用C++20的范围或库,您可以非常轻松地做到这一点:

int main() {
    std::list<std::string> l_str = {"a", "b", "c"};
    std::unordered_map<std::string, std::string> m_str = {{"d", "dd"}, {"e", "ee"}};

    using namespace ranges::views; // for concat(), all() and keys()
    for (auto& e : concat(all(l_str), keys(m_str))) {
        std::cout << e << ' ';
    }
}
输出:a b c e d


注意,我用std::string替换了std::wstring,但这在演示中不会有任何实际区别。

对于C++20或range-v3,我非常确定您可以拥有这两个容器的串联视图。与其专注于您不想处理的内容,不如将您呈现的平面二维矩阵按什么顺序列在一维上下文中?你能给出输入/输出示例来帮助我们帮助你吗?地图中的顺序并不重要,只要我使用C++20或range-v3浏览所有元素,我很确定您可以看到这两个容器的连接视图。不要集中精力于您不想处理的内容:在1D上下文中,您所呈现的平坦2D矩阵将以什么顺序列出?你能举个例子来帮助我们帮助你吗?地图上的顺序并不重要,只要我看了所有的元素,你就会在精神上对曲调a b c e d投反对票,但无论如何,这是一首真正的曲子。:-因为这不是用C++版本的标记,你有什么建议来适应这个C++ 20吗?编辑:精神部分是我-听金属-now@TedLyngmo嘿,它的名字里有个无序的名字,不是吗D至于采用您已经包括了所有内容。您在心理上对a b c e d曲调投了反对票,但无论如何,这是一首真正的曲调。:-因为这不是用C++版本的标记,你有什么建议来适应这个C++ 20吗?编辑:精神部分是我-听金属-now@TedLyngmo嘿,它的名字里有个无序的名字,不是吗D至于采用您已经包含了所有内容。