文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C++中常见容器类如何使用

2023-07-05 19:31

关注

本篇内容主要讲解“C++中常见容器类如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++中常见容器类如何使用”吧!

综合示例

1. vector:动态数组,支持随机访问

#include <iostream>#include <vector>using namespace std;int main(){    vector<int> v;    // 添加元素    v.push_back(1);    v.push_back(2);    v.push_back(3);    // 遍历元素    for (auto it = v.begin(); it != v.end(); ++it)    {        cout << *it << " ";    }    cout << endl;    // 访问元素    cout << v[0] << endl;    cout << v.at(1) << endl;    // 删除元素    v.erase(v.begin() + 1);    // 大小和容量    cout << v.size() << endl;    cout << v.capacity() << endl;    return 0;}

2. list:双向链表,支持双向遍历和插入删除

#include <iostream>#include <list>using namespace std;int main(){    list<int> l;    // 添加元素    l.push_back(1);    l.push_back(2);    l.push_back(3);    l.push_front(0);    // 遍历元素    for (auto it = l.begin(); it != l.end(); ++it)    {        cout << *it << " ";    }    cout << endl;    // 访问元素    cout << l.front() << endl;    cout << l.back() << endl;    // 删除元素    l.pop_front();    // 大小    cout << l.size() << endl;    return 0;}

3. deque:双端队列,支持首尾插入删除和随机访问

#include <iostream>#include <deque>using namespace std;int main(){    deque<int> d;    // 添加元素    d.push_back(1);    d.push_front(0);    d.push_back(2);    // 遍历元素    for (auto it = d.begin(); it != d.end(); ++it)    {        cout << *it << " ";    }    cout << endl;    // 访问元素    cout << d[0] << endl;    cout << d.at(1) << endl;    // 删除元素    d.pop_front();    // 大小    cout << d.size() << endl;    return 0;}

4. map:红黑树实现的关联数组,支持按键访问和遍历

#include <iostream>#include <map>using namespace std;int main(){    map<string, int> m;    // 添加元素    m["apple"] = 1;    m["banana"] = 2;    m.insert(make_pair("orange", 3));    // 遍历元素    for (auto it = m.begin(); it != m.end(); ++it)    {        cout << it->first << " " << it->second << endl;    }    // 访问元素    cout << m["apple"] << endl;    // 删除元素    m.erase("banana");    // 大小    cout << m.size() << endl;    return 0;}

5. set:红黑树实现的集合,支持按值访问和遍历

#include <iostream>#include <set>using namespace std;int main(){    set<int> s;    // 添加元素    s.insert(1);    s.insert(2);    s.insert(3);    // 遍历元素    for (auto it = s.begin(); it != s.end(); ++it)    {        cout << *it << " ";    }    cout << endl;    // 访问元素    auto it = s.find(2);    if (it != s.end())    {        cout << *it << endl;    }    // 删除元素    s.erase(3);    // 大小    cout << s.size() << endl;    return 0;}

6. unordered_map:哈希表实现的关联数组,支持按键访问和遍历

#include <iostream>#include <unordered_map>using namespace std;int main(){    unordered_map<string, int> um;    // 添加元素    um["apple"] = 1;    um["banana"] = 2;    um.insert(make_pair("orange", 3));    // 遍历元素    for (auto it = um.begin(); it != um.end(); ++it)    {        cout << it->first << " " << it->second << endl;    }    // 访问元素    auto it = um.find("apple");    if (it != um.end())    {        cout << it->second << endl;    }    // 删除元素    um.erase("banana");    // 大小    cout << um.size() << endl;    return 0;}

7. unordered_set:哈希表实现的集合,支持按值访问和遍历

#include <iostream>#include <unordered_set>using namespace std;int main(){    unordered_set<int> us;    // 添加元素    us.insert(1);    us.insert(2);    us.insert(3);    // 遍历元素    for (auto it = us.begin(); it != us.end(); ++it)    {        cout << *it << " ";    }    cout << endl;    // 访问元素    auto it = us.find(2);    if (it != us.end())    {        cout << *it << endl;    }    // 删除元素    us.erase(3);    // 大小    cout << us.size() << endl;    return 0;}

检索方法示例

根据下标检索的容器类有vector、deque

根据值检索的容器类有set、map、unordered_set、unordered_map

(感觉主要靠容器.find()方法、容器.count()方法或者还可以用algorithm库里面的find)

1. vector:根据下标检索

#include <iostream>#include <vector>using namespace std;int main(){    vector<int> v = {1, 2, 3};    // 访问元素    cout << v[0] << endl;    cout << v.at(1) << endl;    // 判断元素是否在容器内    if (v.size() > 0 && v[0] == 1)    {        cout << "1 is in the vector." << endl;    }    return 0;}

2. deque:根据下标检索

#include <iostream>#include <deque>using namespace std;int main(){    deque<int> d = {1, 2, 3};    // 访问元素    cout << d[0] << endl;    cout << d.at(1) << endl;    // 判断元素是否在容器内    if (d.size() > 0 && d[0] == 1)    {        cout << "1 is in the deque." << endl;    }    return 0;}

3. set:根据值检索

#include <iostream>#include <set>using namespace std;int main(){    set<int> s = {1, 2, 3};    // 查找元素    auto it = s.find(2);    if (it != s.end())    {        cout << *it << " is in the set." << endl;    }    // 判断元素是否在容器内    if (s.count(1) > 0)    {        cout << "1 is in the set." << endl;    }    return 0;}

4. map:根据值检索

#include <iostream>#include <map>using namespace std;int main(){    map<string, int> m = {{"apple", 1}, {"banana", 2}, {"orange", 3}};    // 查找元素    auto it = m.find("banana");    if (it != m.end())    {        cout << it->second << " is in the map." << endl;    }    // 判断元素是否在容器内    if (m.count("apple") > 0)    {        cout << "apple is in the map." << endl;    }    return 0;}

5. unordered_set:根据值检索

#include <iostream>#include <unordered_set>using namespace std;int main(){    unordered_set<int> us = {1, 2, 3};    // 查找元素    auto it = us.find(2);    if (it != us.end())    {        cout << *it << " is in the unordered_set." << endl;    }    // 判断元素是否在容器内    if (us.count(1) > 0)    {        cout << "1 is in the unordered_set." << endl;    }    return 0;}

6. unordered_map:根据值检索

#include <iostream>#include <unordered_map>using namespace std;int main(){    unordered_map<string, int> um = {{"apple", 1}, {"banana", 2}, {"orange", 3}};    // 查找元素    auto it = um.find("banana");    if (it != um.end())    {        cout << it->second << " is in the unordered_map." << endl;    }    // 判断元素是否在容器内    if (um.count("apple") > 0)    {        cout << "apple is in the unordered_map." << endl;    }    return 0;}

到此,相信大家对“C++中常见容器类如何使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯