C++ STL (基础)】的更多相关文章

deque 和vector差不多,可以在前端后端插入,一般用deque取代vector,vector只能在后端插入push_back().deque还可以push_front(),但是deque后端插入比vecto稍慢. );返回的是一个迭代器.删除使用erase(位置):或者erase(重哪里a,到哪里b);其中a位置包括,而b位置是不包括的,位置一般都是用的迭代器.list反转和排序:lis.reverse(), lis.sort().可以使用distance(a, b);计算a到b的距离.…
一,STL的组成 1.什么是STL STL(Standard Template Library)标准模板库的简称,是由惠普开发的一系列软件的总称,STL现在是C++的一部分,已经被构建于编译系统之内,所以不需要再引入. 2.STL的组成部分 容器(containers):是一种数据结构容器,使用类模板的方式提供,我们可以方便的进行数据的存储操作. 适配器(adapters):以序列式容器为基础,提供的栈,队列和优先级队列的这种容器. 迭代器(iterators):类似于指针,用来操作容器的对象.…
stl容器:vector,deque,list,map/multimap,set 特殊容器:stack,queue,priority_queue 通用操作 size()  返回当前容器元素数量 empty() 判断容器是否为空 max_size() 返回容器能容纳的最大元素数量 与迭代器有关的操作 begin() 返回一个迭代器,指向第一个元素 end() 指向最后一个元素之后 rbegin() 指向逆向遍历的第一个元素 rend() 指向逆向遍历的最后一个元素之后 元素操作 insert(po…
STL排序算法 排序算法要求随机访问迭代器 vector, deque, container array, native array 例子 vector<int> vec = {9,1,10,2,45,3,90,4,9,5,8}; sort(vec.begin(), vec.end()); // 默认以 < 排序 // vec: 1 2 3 4 5 8 9 9 10 45 90 bool lsb_less(int x, int y) { return (x%10)<(y%10);…
1 首先看个仿函数的例子 class X { public: void operator()(string str) { // 函数调用运算符,返回类型在operator之前 cout << "Calling functor X with parameter " << str<< endl; } operator string () const { return "X"; } //类型转换函数,返回类型在operator之后 };…
1 迭代器 Iterators 5种迭代器类型 随机访问迭代器: vector, deque, array // 允许的操作 vector<int> itr; itr = itr + 5; // itr往前移5步 itr = itr - 4; if (itr2 > itr1) ... ++itr; // 前置的比后置的快 --itr; 双向迭代器: list, set/multiset, map/multimap // 允许的操作 list<int> itr; ++itr;…
容器种类 序列容器(数组,链表) Vector, deque, list, forward list, array 关联容器(二叉树),总是有序的 set, multiset根据值排序,元素值不能修改 map, multimap根据key排序,键值不能修改 无序容器(hash 表) 无序set/multiset 无序map/multimap 序列容器 Vector vector<int> vec; // vec.size() == 0 vec.push_back(4); vec.push_ba…
为什么要使用C++标准库 /* * 为什么使用C++标准库: * 1. 代码重用,不用重新造轮子 * 2. 效率(快速,且使用更少的资源). 现代C++编译器经常对C++标准库的代码有优化 * 3. 准确,更少的bug * 4. 简洁,可读性好:减少控制流 * 5. 标准化,保证可用 * 6. 是编写库的一个很好的榜样 * 7. 对数据结构和算法有更好的认识 */ /* * STL: Standard Template Library * -- 容器和算法,迭代器是容器和算法之间的桥梁,使容器和…
vector: 1.头文件#include<vector> 2.声明vector对象,vector<int> vec; 3.尾部插入a:vec.push_back(a); 4.使用下标访问元素,cout<<vec[0]<<endl; 5.使用迭代器访问元素: for( vector<int>::iterator it=vec.begin();it!=vec.end();it++)           cout<<*it<<…
#include <iostream> #include <queue> #include <string> using namespace std; #define N_K 10 struct Data_s{ int number; ]; }; typedef struct Data_s Data_t; void makeData(Data_t *d) { int i; ;i<N_K;i++) { d[i].number = i; sprintf(d[i].na…