前置:
对于stl容器库,我只做了一些常用的笔记,关于更详细的使用可以参考:https://cppreference.com/https://cppreference.com/
一.string--字符串
对于C++中string字符串会比C语言的字符数组使用起来会顺手许多。
命名空间:std
关于迭代器可以理解为指针,和指针的使用方法差不多,对于迭代器更细的描述会在后续的笔记中更新。
代码运用:
#include <iostream> #include <string> using namespace std;int main() {//定义一个字符串,并初始化string str = "nihao nihao";cout << "str = " << str << endl;//访问位置1的字符并赋值给字符cchar c = str[1];cout << "c = " << c << endl;string str2 = "hello";//使用等号进行字符串拷贝赋值str = str2;cout << "str = " << str << endl;str += " world";cout << "str = " << str << endl;cout << "str len = " << str.length() << endl;cout << "str is emtpy " << boolalpha << str.empty() << endl;int ind = 4;cout << "str[" << ind << "] = " << str.at(ind) << endl;cout << "str.front() = " << str.front() << endl;cout << "str.back() = " << str.back() << endl;cout << "str.find(l) = " << str.find("l") << endl;cout << "str.rfind(l) = " << str.rfind("l") << endl;//在字符串最后的位置加上" nihao"str.insert(str.length() - 1, " nihao");cout << "str = " << str << endl;//将刚刚插入的" nihao"删除str.erase(str.length() - 7, 6);cout << "str = " << str << endl;//从0位置开始替换6个字符,并替换为ni haostr.replace(0, 6, "ni hao");cout << "str = " << str << endl;return 0; }
二.vector容器
C语言中使用数组的方法都可以替换到vector中进行使用。
命名空间:std
三.queue容器
对于queue容器,他就是数据结构中的队列。
命名空间:std
注意:queue容器使用方式要像队列的方式去使用。
成员方法只是常用的举例出来了,还有其他的。
priority_queue容器
四.stack容器
对于stack容器,他就是数据结构中的栈。
注意:stack容器使用方式要像栈的方式去使用。
命名空间:std
五.set容器
set 是 C++ 标准库中的关联容器之一,它提供了一种存储唯一元素的方式,并且以红黑树作为底层实现。
命名空间:std
使用演示:
#include <iostream> #include <set> #include <ctime> using namespace std;void output(set<int> s) {//用set<int>迭代器对象进行定义 i对象,然后进行遍历set里的元素for (set<int>::iterator i = s.begin(); i != s.end(); i++) {i != s.begin() && cout << " ";//把迭代器看为指针,那么要对指针进行取值就是利用*cout << *i;}cout << endl;return ; }int main() {srand(time(0));set<int> s;for (int i = 0; i < 10; i++) {i && cout << " ";int val = rand() % 100;//添加元素进ss.insert(val);cout << val;}cout << endl;//通过输出发现,set将插入进的元素进行了排序output(s);for (int i = 0; i < 10; i++) {int val = rand() % 100;//s.find返回是迭代器,理解为指针//如果没有找到他就返回一个指针指向最后一个元素的后一个位置,也就是s.end();//那么没有找到就返回是s.end()的位置,那就通过这样去判断找没找到if (s.find(val) == s.end()) {cout << val << "is not find in set" << endl;continue;}cout << "find " << val << " in set" << endl;//找到了并删除cout << "erase" << val << " at set" << endl;s.erase(val);}return 0; }
unordered_set
区别:set他会将,元素进行排序,而unordered_set不会将元素进行排序,其他使用方式都相同。头文件<unordered_set>
六.map容器
map是 C++ STL 中的关联容器,用于存储键值对。它提供了一种将键映射到值的机制,其中每个键必须是唯一的.
命名空间:std
七.sort排序算法
代码演示:
#include <iostream> #include <cstdlib> #include <ctime> #include <vector> #include <algorithm> using namespace std;void output(vector<int> arr) {for (int i = 0; i < 10; i++) {i && cout << " ";cout << arr[i];}cout << endl;return ; }bool comp(int a, int b) {return a > b; }int main() {srand(time(0));vector<int> arr;for (int i = 0; i < 10; i++) {arr.push_back(rand() % 100);}output(arr);sort(arr.begin(), arr.end());output(arr);sort(arr.begin(), arr.end(), comp);output(arr);return 0; }