
STL标准容器
常用C++的容器数据结构
WX Chen
实用技术总结,前沿科技分享,欢迎交流技术和业务
展开
-
priority_queue(优先队列)基本操作
#include <queue>优先队列std::priority_queue 可用于构造堆。比如:大顶堆:priority_queue<int> q;,大的数在前边。小顶堆: priority_queue<int, vector<int>, greater<int>> q;,小的数在前边。std::priority_queue是个模板类,如下:template< class T, class Containe...原创 2021-12-02 15:20:00 · 939 阅读 · 0 评论 -
deque(双端队列)基本操作
#include <deque>定义及初始化deque<int> a(10); // 定义一个int类型的双端队列a,并设置初始大小为10deque<int> a(10, 1); // 定义一个int类型的双端队列a,并设置初始大小为10且初始值都为11 容量函数容器大小:deq.size();更改容器大小:deq.resize();容器判空:deq.empty();2 添加函数头部添加元素:deq.push_front(const T&原创 2021-12-02 15:19:01 · 673 阅读 · 0 评论 -
queue基本操作
#include <queue>queue入队,如例:q.push(x); 将x 接到队列的末端。queue出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。访问queue队首元素,如例:q.front(),即最早被压入队列的元素。访问queue队尾元素,如例:q.back(),即最后被压入队列的元素。判断queue队列空,如例:q.empty(),当队列空时,返回true。访问队列中的元素个数,如例:q.size()https://b原创 2021-12-02 15:17:35 · 975 阅读 · 0 评论 -
list基本操作
STL中的链表是一个双向循环链表#include <list>定义及初始化list<int> a(10); // 定义一个int类型的列表a,并设置初始大小为10list<int> a(10, 1); // 定义一个int类型的列表a,并设置初始大小为10且初始值都为11 容量函数容器大小:lst.size();更改容器大小:lst.resize();容器判空:lst.empty();2 添加函数头部添加元素:lst.push_front(co原创 2021-12-02 15:14:55 · 574 阅读 · 0 评论 -
stack基本操作
为了严格遵循堆栈的数据后进先出原则,stack 不提供元素的任何迭代器操作#include <stack>创建 stack 对象stack<int> s;元素入栈void push(const value_type& x)元素出栈void pop()取栈顶元素value_type& top()堆栈非空判断bool empty()判断堆栈是否为空,返回 true 表示堆栈已空,false 表示堆栈非空。size() 返回栈...原创 2021-12-02 15:13:58 · 232 阅读 · 0 评论 -
unordered_set基本操作
#include <unordered_set>http://c.biancheng.net/view/7250.htmlset 容器内的元素会被自动排序,set 与 map 不同,set 中的元素即是键值又是实值,set 不允许两个元素有相同的键值。#include <set>定义及初始化set<int> a;1 容量函数容器大小:st.size();容器判空:st.empty();查找键 key 的元素个数:st.count(key);2原创 2021-12-02 15:13:23 · 1091 阅读 · 0 评论 -
unordered_map(哈希表/字典)基本操作
[查找元素是否存在]unordered_map <int, int> mp;查找x是否在map中 方法1: 若存在 mp.find(x)!=mp.end() 方法2: 若存在 mp.count(x)!=0[插入数据]mp.insert(Map::value_type(1,"Raoul"));[遍历map] for(unordered_map<key,T>::iterator iter=mp.begin();iter!=mp.end();i...原创 2021-12-02 15:12:56 · 2685 阅读 · 0 评论 -
vector(向量)基本操作
vector作为参数的三种传参方式c++中常用的vector容器作为参数时,有三种传参方式,分别如下(为说明问题,用二维vector):function1(std::vector<std::vector<int> > vec),传值function2(std::vector<std::vector<int> >& vec),传引用function3(std::vector<std::vector<int> >* ve原创 2021-12-02 15:11:52 · 2557 阅读 · 0 评论 -
STL(标准容器)-string基本操作
1. 构造函数string s1(); // si = ""string s2("Hello"); // s2 = "Hello"2. 对 string 对象赋值s1 = "Hello"; // s1 = "Hello"s2 = 'K'; // s2 = "K"3. 求字符串的长度length() 成员函数返回字符串的长度。size() 成员函数可以实现同样的功能。4. string对象中字符串的连接可以使用+和+=运算符对 string 对象执行字符串的连接操作5. s...原创 2021-11-01 14:33:04 · 196 阅读 · 0 评论 -
STL 标准模板库 初步了解
【vector】动态数组#include <vector> //在VS下实现,其他IDE可能不行 vector<int> arr(128); int capacity=arr.capacity(); //缓冲区容量128 int size=arr.size(); //大小,即元素个数 128 arr[0]=12; //初始值为...原创 2017-02-26 20:47:31 · 241 阅读 · 0 评论 -
字符串取子串
C++ str.substr(pos,2)C 函数名称:strncpy函数原型:char*strncpy(char*dest,constchar*src,intcount)函数功能:将字符串src中的count个字符拷贝到字符串dest中去函数返回:指向dest的指针参数说明:dest-目的字符串,src-源字符串,c...原创 2017-02-26 20:44:28 · 1136 阅读 · 0 评论 -
字符串赋值方式
string str;str[0] = '1';是错的 改成string str;str += '1';或者string str;str += "1";原创 2017-02-26 20:43:50 · 744 阅读 · 0 评论 -
动态创建二维数组
很多人会以为这样做的 int **p = new int[5][10];其实应该这样做 int (*p)[10] = new int[5][10];删除是 delete []p;原创 2017-06-01 22:58:19 · 248 阅读 · 0 评论 -
Mat和vector的内存释放
模块里面的handle是用calloc分配的,如果有Mat和vector,free的时候没有自动调用Mat和vector的析构函数,需要手动释放:1、Mat调用release()方法释放2、vector使用vector<类型>().swap(变量); 该方法会自动调用类的析构函数,也可以释放vector<Mat>里面的Mat...原创 2021-07-16 19:25:46 · 2072 阅读 · 0 评论