STL 常见库函数
来源:互联网 发布:编程基本算法 编辑:程序博客网 时间:2024/05/01 00:22
stack
- 头文件 #include <stack>
- 声明 stack<int> s;
const_reference top() const;更改栈顶元素
返回栈顶的元素
#include <iostream>#include <stack>using namespace std;int main() { stack<int> s; s.push(1); //将元素压入栈顶 s.push(2); s.pop(); //弹出栈顶元素 cout << s.empty() << endl; //判断栈是否为空 cout << s.size() << endl; //返回栈内的元素个数 s.top() = 2; //更改栈顶元素 cout << s.top() << endl; //返回栈顶元素 return 0;}
queue
- 头文件 #include <queue>
- 声明 queue<int> q;
const_reference front() const;更改队列首部元素
返回队列首部元素reference back();
const_reference back() const;更改队列尾部元素
返回队列尾部元素
#include <iostream>#include <queue>using namespace std;int main() { queue<int> q; q.push(1); //在队列尾插入一个元素 q.push(2); q.pop(); //删除队列首部的元素 cout << q.empty() << endl; //检查队列是否为空 cout << q.size() << endl; //返回队列中元素的数量 q.front() = 10; //更改队列首部元素 cout << q.front() << endl; //返回队列首部元素 q.back() = 20; //更改队列尾部元素 cout << q.back() << endl; //返回队列尾部元素 return 0;}
priority_queue
- 头文件 #include <queue>
- 声明 priority_queue<int> q;
void push( const T& value ); 向优先队列中插入一个元素void pop();删除优先队列首部的元素bool empty() const; 检查优先队列是否为空size_type size() const;返回优先队列中元素的数量const_reference top() const;返回优先队列首部的元素
#include <iostream>#include <queue>using namespace std;struct node{ int val; bool operator<(const node & X) const { return val > X.val; //此时,队列中的元素是按照从小到达排序 // return val < X.val; 这时候按照从大到小排序 } node(int val) {this->val = val;};};struct cmp{ bool operator()(const node & a, const node & b) { return a.val < b.val; }};int main() { priority_queue<node> q;// priority_queue<node, vector<node>, cmp> q; 声明同上 for (int i = 1; i < 10; ++i) q.push(node(i)); //向优先队列中插入一个元素 cout << q.size() << endl; //返回优先队列中元素的数量 while (!q.empty()) { //检查优先队列是否为空 cout << q.top().val << endl; //返回优先队列首部的元素 q.pop(); //删除优先队列首部的元素 } return 0;}
vector
- 头文件 #include <vector>
- 声明
- vector<int> v;
- vector<int> v(v1);
- vector<int> v(ary + 2, ary + 5);
- vector<int> v(10, 1);
vector<Elem> v(v1);
vector<Elem> v(begin, end);
vector<Elem> v(n, elem);创建一个空的vector
复制一个v1的vector
创建一个[begin, end)区间的vector
创建一个含有n个elem的vectorvoid assign(n, elem);
void assign(begin, end);将n个elem的拷贝复制给v
将[begin, end)区间的值赋给vreference at(size_type pos);传回索引pos所指的数据reference front();
const_reference front() const;传回第一个数据reference back();
const_reference back() const;传回最后一个数据iterator begin();
const_iterator begin() const;
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;返回指向第一个元素的地址
传回一个逆向队列的第一个数据的地址iterator end();
const_iterator end() const;
reverse_iterator rend();
const_reverse_iterator rend() const;指向迭代器中的最后一个数据的下一个位置的地址
传回一个逆向队列的最后一个数据的下一个位置的地址v.insert(pos, elem);
v.insert(pos, n, elem);
v.insert(pos, begin, end);在pos位置插入一个elem拷贝
在pos位置插入n个elem拷贝
在pos位置插入[begin, end)的数据v.erase(pos);
v.erase(v.begin(), v.end());删除pos位置的数据
删除[v.begin(), v.end())的数据bool empty() const;判断容器是否为空size_type size() const;返回容器中实际数据的个数void push_back(const T& x);在容器尾部加入一个数据void pop_back();删除最后一个数据void clear();清空容器v1.swap(v2);
swap(v1, v2);将v1和v2互换
#include <iostream>#include <vector>using namespace std;int main() { int ary[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; vector<int> v; //声明一个空的vector vector<int> v1(v); //复制一个v的vector vector<int> v2(10, 1); //v2中有10个元素,每个元素的值为1 vector<int> v3(ary + 1, ary + 4); //v3中以区间[ary[1], ary[4])赋值 v.assign(ary, ary + 10); //v中以区间[ary[0], ary[10])赋值 v1.assign(10, 2); //v1中有10个元素,每个元素的值为2 cout << v.at(1) << endl; //输出v中在位置1中的元素 cout << v[1] << endl; //等同于上,不过他不会做位置越界的检查 cout << v.front() << endl; //输出v中第一个位置的元素 v.front() = 100; //为第一个位置的元素赋值 v.back() = 200; //为v中最后一个元素赋值 cout << v.back() << endl; //输出v中的最后一个位置的元素 v.insert(v.begin(), 10); //在开头插入元素10 v.insert(v.begin(), 5, 2); //在开头插入5个元素,每个元素为2 v.insert(v.begin()+2, ary+5, ary+6); //在v[2]的位置开始插入[ary[5], ary[6])的元素 v.erase(v.begin() + 2); //删除v[2] v.erase(v.begin(), v.begin() + 5); //删除[v[0], v[5])元素 for (vector<int>::iterator itor = v.begin(); itor != v.end(); itor++) cout << *itor << ' '; //正向遍历vector数组 v cout << endl; for (vector<int>::reverse_iterator ritor = v.rbegin(); ritor != v.rend(); ritor++) cout << *ritor << ' '; //逆向遍历vector数组 v cout << endl; cout << v.size() << endl; //输出vector数组中元素的个数 while (!v.empty()) //判断v是否为空 v.pop_back(); //删除v中最后一个元素 v1.clear(); //清空vector数组v1 v.swap(v2); //交换v和v2 return 0;}
1 0
- STL 常见库函数
- STL 库函数的思考
- C++ STL 库函数大全
- STL 库函数测试
- 常见库函数的实现
- 常见库函数的实现
- STL算法库函数代码示例
- deque的STL常用库函数
- c++ STL常用 库函数 算法
- C常见标准库函数实现
- C++STL库函数之string用法总结
- foj 1054 ;可用STL的库函数
- L - Registration system——STL库函数
- unique函数的使用方法(STL库函数)
- lower_bound函数的用法(STL库函数)
- STL库函数sort的用法详解
- 检索- STL的使用 & 库函数熟悉
- C++ STL常见用法
- 如何解决树莓派屏幕右上角有个方形的色块问题
- uva 10003——Cutting Sticks
- Zxing美化
- 数组通过foreach引用的问题
- QUESTION 105 Examine the following RMAN script: RMAN> run { debug on; allocate channel c1 type disk;
- STL 常见库函数
- Linux显示中文乱码解决方法
- 解决文本框中输入字符限制---精确控制中文占两个字节,英文占一个字节~
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- C#动态数组
- 项目管理
- 分析Android的进程通信机制
- 使用 Arrays 类操作 Java 中的数组
- 树莓派电源红色指示灯不亮或闪烁问题