本文共 2472 字,大约阅读时间需要 8 分钟。
C++与STL容器
栈(先入后出)
栈是最基本的数据结构,具有后入先出、先入后出的特性。C++中的stack
模板类可以用来创建栈。以下是栈的基本操作:
stack s;s.push(); // 入栈操作s.pop(); // 出栈操作s.top(); // 取栈顶元素
队列(先入先出)
队列与栈类似,但其操作方式是先入先出。C++中的queue
模板类可以用来创建队列。以下是队列的基本操作:
queue q;q.push(); // 入队操作q.pop(); // 出队操作q.front(); // 取队首元素
优先队列
优先队列是一种特殊的队列,它总是优先处理 priority高的元素。C++中的priority_queue
模板类支持两种优先队列实现方式:
priority_queue
priority_queue
操作方式如下:
pq.push(); // 入队操作pq.pop(); // 出队操作pq.top(); // 取队首元素
双端队列
双端队列既可以像队列一样进行先入先出操作,也可以像栈一样进行后入后出操作。C++中的deque
模板类可以用来创建双端队列。常用操作如下:
deque dq;dq.push_front(2); // 推入队首dq.push_back(3); // 推入队尾dq.pop_front(); // 弹出队首dq.pop_back(); // 弹出队尾
链表
链表是一种线性数据结构,节点通过指针连接。C++中的list
模板类可以用来创建链表。常用操作如下:
list lst;lst.push_front(1); // 推入队首lst.push_back(3); // 推入队尾auto it = find(lst.begin(), lst.end(), 2);if (it != lst.end()) { lst.insert(it, 4);}lst.erase(it);
算法与排序
算法是数据处理的核心。C++中的algorithm
头文件提供了丰富的算法,如排序、逆序排列等。常用算法如下:
sort(A+m, A+n, less ()); // 升序排列sort(A+m, A+n, greater ()); // 降序排列
bool found = binary_search(A, A+n, x);int lower = lower_bound(A, A+n, x) - A;int upper = upper_bound(A, A+n, x) - A;
字符串操作
字符串是日常编程中的重要类型。C++中的string
类提供了丰富的操作方法。常见操作如下:
string str = "Hello, World!";transform(str.begin(), str.end(), str.begin(), ::tolower); // 转换为小写transform(str.begin(), str.end(), str.begin(), ::toupper); // 转换为大写reverse(str.begin(), str.end()); // 反转字符串
容器序列反转
序列容器的反转可以通过标准算法实现:
#include#include reverse(str.begin(), str.end());
数值转换
数值转换是日常编程中常见操作。C++中的string
类和cctype
头文件提供了丰富的转换方法:
#include#include int i = stoi(str, nullptr, base);ull i = stoull(str, nullptr, base);double num = stod(str, nullptr);
字符串操作
字符串操作也是日常编程中的重要内容。C++中的string
类提供了丰富的操作方法:
int len = str.size() == str.length();str.insert(L, str1);str.erase(L, len);str.substr(L, len); // 返回从位置L开始长度为len的子串str.find(str1); // 查找子串str.replace(L, len, str1);str.clear(); // 清空字符串
集合与映射
集合与映射是数据结构中的高级类型。C++中的set
和unordered_map
模板类可以用来创建集合和映射。常用操作如下:
set s;s.insert(5);cout << *(--s.end()); // 输出集合中的最大元素
位掩码
位掩码用于处理位操作。C++中的bitset
类提供了位操作功能。常用操作如下:
bitset<5> bs("101");cout << bs.to_string() << endl;ull val = bs.to_ullong();for (int i = 0; i < bs.size(); i++) { if (bs(i)) { // 处理第i位为1的情况 }}
总之,C++与STL容器为程序员提供了丰富的工具和方法。通过合理选择和使用这些容器,可以实现高效、简洁的数据处理。
转载地址:http://tqfwz.baihongyu.com/