【问题标题】:Nested STL datastructure嵌套的 STL 数据结构
【发布时间】:2020-01-31 01:21:13
【问题描述】:

实际上我在 c++ 中嵌套 Stl 的情况下遇到问题,那就是如何遍历嵌套的 stl。

#include<iostream>
#include<vector>
#include<list>
#include<map>
using namespace std;
int main(void) 
{
    vector< vector<int> > vc;
    vector<int> vc1;
    map<int , list<int > > mp;
}

现在我如何在vector &lt; vector &lt;int &gt; &gt; 中输入并打印vc 的每个元素, 同样,我如何在map &lt; int , list &lt; int &gt; &gt; mp 中输入 并打印对应于 map 的每个键的每个列表。

【问题讨论】:

  • 在简单向量 中,我们会像这样遍历:- #include #include using namespace std; int main(void){ 向量 v(4); for(int i=0;i>v[i]; } vector::iterator itr = v.begin(); for(;itr!=v.end();itr++){ cout

标签: c++ list dictionary vector c++-standard-library


【解决方案1】:

让我们一起做。 vector&lt;int&gt; v; vector 是使用 new 运算符分配的纯数组的包装器,因此可以通过应用指针运算来访问其元素。 v[i], *(v.begin() +i) 访问第 i 个元素。从 0 开始索引。 如何迭代

for(int i = 0; i < v.size; i++) cout << v[i] << endl;
for(int x: v) cout << v[i] << endl;
for(auto it = v.begin(); it != v.end(); ++it) cout << v[i] << endl;

让我们再举一个例子 map&lt;int, list&lt;int&gt; &gt; mp; 它不是线性数据结构,而是树形结构。 但迭代是相似的。 for(auto node: mp) 其中节点是 std:: pair&lt;int, list&lt;int&gt;&gt; 在这个 for 循环中,您可以使用表达式 node.second 获取 list&lt;int&gt;,并以类似的方式对其进行迭代。

for(const auto &node: mp)// node is pair<int, list<int>>
{  int key = node.first;
   cout << key << " ";
   for(auto elem: node.second) // elem is int
      cout << elem << " ";
   cout << endl;
}

【讨论】:

    猜你喜欢
    • 2014-04-27
    • 2018-03-16
    • 1970-01-01
    • 2022-01-22
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多