C++中的容器{vector、stack、queue、map、pair、set}

2024-05-14 05:48

本文主要是介绍C++中的容器{vector、stack、queue、map、pair、set},希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • vector向量
    • 1、头文件
    • 2、vector主要操作
    • 3、截取vector
  • stack栈
    • 1、头文件
    • 2、基本操作
  • queue队列
    • 1、头文件
    • 2、基本操作
  • map关联容器
    • 1、头文件
    • 2、基本操作
  • set集合容器
    • 特点
  • pair

vector向量

C++ vector 容器浅析

向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。

1、头文件

#include<vector>//首先在程序开头处加上以包含所需要的类文件vector
using namespace std;//还有一定要加上

2、vector主要操作

vector<int> test1;
cout<< sizeof(test1)<<endl;//16
cout << test1.size() << endl;//0vector<int> test3(5);
cout << sizeof(test3) << endl;//16
cout << test3.size() << endl;//5test1.push_back(1);//动态数组,输入元素:1
test3.push_back(1);//元素:0 0 0 0 0 1test1.pop_back();//无返回值,去掉最后一个元素

3、截取vector

vector<int>::const_iterator begin = num.begin();
vector<int>::const_iterator last = num.begin() + length;
vector<int> new_arr(begin, last);

stack栈

先进后出

1、头文件

#include <stack> 

2、基本操作

stack<int> S;
cout << sizeof(S) << endl;//20
cout <<boolalpha<< S.empty() << endl;//栈S为空,返回true
S.push(3);//3
S.push(7);//3 7
S.push(1);//3 7 1
cout << S.size() << " ";//栈大小为3cout << S.top() << " ";//输出栈顶元素:1
S.pop();//移除栈顶元素,剩余3 7cout << S.top() << " ";//输出栈顶元素:7
S.pop();//移除栈顶元素,剩余3cout << S.top() << " ";//输出栈顶元素:3
S.push(5);//3 5cout << S.top() << " ";//输出栈顶元素:5
S.pop();//移除栈顶元素,剩余3cout << S.top() << endl;//输出栈顶元素:3
cout << boolalpha << S.empty() << endl;//栈S不为空,返回false
S.emplace(2);

queue队列

先进先出

1、头文件

#include<queue>

2、基本操作

queue<int> Q;
cout << sizeof(Q) << endl;//20
cout << Q.size() << endl;//0
cout << boolalpha << Q.empty() << endl;//队列Q为空,返回trueQ.push(1);Q.push(2);Q.push(3);//队列:1 2 3
cout << Q.size() << endl;//3
cout << Q.front() << endl;//输出队首:1
Q.pop();//移除队首元素
cout << Q.front() << endl;//输出队首:2

输出栈中所有的元素

while (!Q.empty())
{cout>>Q.front();Q.pop();
}

map关联容器

C/C++ - Map (STL) 用法與心得完全攻略

1、头文件

#include<map>

2、基本操作

map<char, int> chineseNum;
chineseNum.insert(pair<char, int>('A', 0));
chineseNum['B'] = 1;map<char, int>::iterator iter;
iter = chineseNum.find('C'); //iter 为 end
iter = chineseNum.find('A');//取出key为'A'的键值对,iter 为 ('A', 0)
cout << iter->first << '\t' << iter->second << endl;int tmp = chineseNum['C'];//F不在map中,会将('F',0)添加进map,并返回0
cout << chineseNum.size() << endl;//3
if (chineseNum.find('C') != chineseNum.end())cout << 'C';//C//迭代器刪除
iter = chineseNum.find('C');
chineseNum.erase(iter);//用關鍵字刪除
int n = chineseNum.erase('B');//如果刪除了會返回1,否則返回0//用迭代器範圍刪除 : 把整個map清空
chineseNum.erase(chineseNum.begin(), chineseNum.end());
//等同於chineseNum.clear()

set集合容器

特点

set集合中不存在重复元素;
set集合中的元素都为有序排列,不管插入的顺序如何。
set不支持下标的操作

#include <set>  //引用头文件
set<float> _set; //定义
_set.insert(1.0); //插入
_set.insert(2.0);
_set.insert(1.00);
_set.insert(0.00);
set<float>::iterator itr = _set.begin();
float f = *itr;
itr = _set.find(0);
f = *itr;cout << *_set.rbegin(); //输出最后一个元素,默认最大

pair

pair <string,double> product1 ("tomatoes",3.25);
pair <string,double> product2;
pair <string,double> product3;product2.first ="lightbulbs"; // type of first is string
product2.second =0.99; // type of second is doubleproduct3 = make_pair ("shoes",20.0);

三十分钟掌握STL

这篇关于C++中的容器{vector、stack、queue、map、pair、set}的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/987916

相关文章

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

spring AMQP代码生成rabbitmq的exchange and queue教程

《springAMQP代码生成rabbitmq的exchangeandqueue教程》使用SpringAMQP代码直接创建RabbitMQexchange和queue,并确保绑定关系自动成立,简... 目录spring AMQP代码生成rabbitmq的exchange and 编程queue执行结果总结s

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

C++ vector越界问题的完整解决方案

《C++vector越界问题的完整解决方案》在C++开发中,std::vector作为最常用的动态数组容器,其便捷性与性能优势使其成为处理可变长度数据的首选,然而,数组越界访问始终是威胁程序稳定性的... 目录引言一、vector越界的底层原理与危害1.1 越界访问的本质原因1.2 越界访问的实际危害二、基

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

C++归并排序代码实现示例代码

《C++归并排序代码实现示例代码》归并排序将待排序数组分成两个子数组,分别对这两个子数组进行排序,然后将排序好的子数组合并,得到排序后的数组,:本文主要介绍C++归并排序代码实现的相关资料,需要的... 目录1 算法核心思想2 代码实现3 算法时间复杂度1 算法核心思想归并排序是一种高效的排序方式,需要用

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么