重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
STL这部分推荐直接看《C++ primer》的9到11章内容,有非常详细的接口列表,还有很多例子。附录里还有常用的泛型算法,适合经常看一下
在南州晴隆等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供做网站、网站设计 网站设计制作定制开发,公司网站建设,企业网站建设,品牌网站设计,网络营销推广,成都外贸网站建设公司,南州晴隆网站建设费用合理。
底层数据结构:动态开辟的数组,每次以原来空间大小的2倍进行扩容的
vector
初始的元素放在队列的中间,方便后续添加元素。外部有一个mapper保存队列,队满的时候会对mapper扩容,队列放在扩容后的mapper的sizeof(原来mapper)/2的位置。
deque容器:
list容器:
vecotr和deque之间的区别?
vector和list之间的区别?
unordered_set:
unordered_map:
map的operator[]重载有两个功能:一是查询,二如果key不存在,会插入一对数据
unordered_map mp1;
mp1.insert(make_pair(12,"asf"));//生成pair类型
mp1.insert({123,"asfsaf"});
底层是红黑树结构。
自定义类型如何在有序容器中排序:要在自定义类型中提供小于运算符的重载
函数对象就是C语言里的函数指针
把有operator()小括号运算符重载函数的对象,称作函数对象或者称作仿函数。
好处:
template
bool mygreater(T a, T b) {
return a > b;
}
template
bool myless(T a, T b) {
return a < b;
}
template
class Myless{//函数对象
public:
bool operator()(T a,T b){
return a
bool compare(T a, T b, Compare comp) {//使用函数指针或者函数对象调用前面定义的两个函数
return comp(a, b);//在使用函数指针的时候无法声明为inline函数,效率低
}
int main() {
cout << compare(10, 30, mygreater)<())<
函数对象的一些其他用法:用于priority_queue和set:
priority_queue,Mygreater> queue1;
priority_queue queue2;
for(int i=0;i<20;i++){
queue1.push(rand()%100);
queue2.push(rand()%100);
}
for(int i=0;i<20;i++){
cout< set1;
set> set2;
for(int i=0;i<20;i++){
set1.insert(rand()%100);
set2.insert(rand()%100);
}
for(int a:set1){
cout<