
STL
最后冰吻free
不在沉默中死亡,就在沉默中爆发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
STL set自定义对象
#include <iostream> #include <set> struct Person{ public: Person(int age, std::string name):m_age(age), m_name(name){} int m_age; std::string m_name; }; std::ostream& operator<<(std::ostream& cout, Person p原创 2021-10-16 14:37:26 · 220 阅读 · 0 评论 -
STL empty由于size
#include <iostream> #include <vector> void test1() { /* stl容器中判断是否为空,最好使用empty,而不是size函数 empty函数对所有标准容器都是常数操作时间,而对一些list实现, size是耗费线性时间 */ } void test2() { /* stl区间成员函数优先于与之对应的单元素成员函数 */ std::vecto原创 2021-09-23 23:26:10 · 156 阅读 · 0 评论 -
STL不要将派生类对象拷贝给父类
#include <iostream> #include <vector> #include <memory> class Base{ public: Base(int age) { m_age = age; } Base& operator=(const Base &b) { m_age = b.m_age; } int m_age; }; class Dervie原创 2021-09-22 23:28:20 · 140 阅读 · 0 评论 -
设计栈并获取最小值
#include <iostream> #include <stack> using namespace std; /*实现一个栈,该栈带有出栈(pop)、入栈(push)、取最小元素 (getMin)3个方法。 要保证这3个方法的时间复杂度都是O(1)。 两个栈对象A和B, A用于存储所有数据,A对象默认第一个元素为最小值,B用于存储A中的最小值 若B中top的值比新待插入元素大,则将新插入元素插入到B中; A执行pop时,先A中top值与B中top值相等,则也删除原创 2021-04-29 17:40:50 · 235 阅读 · 0 评论 -
C++ find和find_if
find_if(iterator beg, iterator end, _Pred); 按值查找元素,找到返回指定位置迭代器,找不到 则返回结束迭代器位置 _Pred:函数或谓词(返回bool类型的仿函数) #include <iostream> #include <string> #include <vector> #include <deque> #include <algorithm> #include <list> #inclu原创 2020-09-09 21:57:45 · 355 阅读 · 0 评论 -
C++ 仿函数函数对象使用
#include <iostream> #include <vector> #include<algorithm> using namespace std; class PrintVector { public: void operator()(int var) { cout<<var<<endl; } }; class AddSelfVector { public: void operator()(int& var)原创 2020-09-09 11:12:08 · 188 阅读 · 0 评论 -
C++ 谓词
谓词 返回bool类型的仿函数称为谓词 若果operator()接受一个参数,叫做一元谓词 若果operator()接受的两个参数,叫做二元谓词 #include <iostream> #include <string> #include <vector> #include <deque> #include <algorithm> #include <list> #include <set> #include <map原创 2020-09-08 21:35:42 · 923 阅读 · 0 评论 -
C++ STL map
map/multimap容器 map中所有的元素都是pair(对组) pair中的第一个元素为key(键),起到索引作用 ,第二个元素为value(值) 所有元素都会根据元素的键值自动排序 map/multimap是关联式容器,底层结构用 二叉树实现 map和multimap区别 map不允许容器中有重复的key值元素 multimap允许容器中有重复的key值元素 函数原型 size(); //返回容器中的元素个数 empty(); //判断容器是否为空 swap(mp); //交换两个容器 insert原创 2020-09-07 21:21:57 · 210 阅读 · 0 评论 -
C++ STL set
set/multiset set:所有元素都会在插入时自动被排序; set/multiset属于关联式容器,底层结构是用二叉树实现; set和multiset区别 set不允许容器中有重复的元素 multiset允许容器中有重复元素原创 2020-09-03 22:46:39 · 168 阅读 · 0 评论 -
C++ STL list
list: 将数据进行链式存储 list是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序 是通过链表中的指针链接实现的 链表是由节点构成的,节点是有数据域和指针域组成; STL中的链表是一个双向循环链表 由于链表的存储并不是连续的内存空间,因此链表list中 的迭代器只支持前移和后移,属于双向迭代器 list的优点 1.采用动态存储分配,不会造成内存浪费和溢出,vector的容量往往比size大很多; 2.链表执行插入和删除操作十分方便,修改指针即可,不需要移动大量元素,vector在插入时会移动原创 2020-08-31 22:50:26 · 271 阅读 · 0 评论 -
C++ STL queue
queue队列:先进先出 只能在队尾添加元素,队头删除元素 因为只有队尾和队头能被外界所访问,因此队列不允许进行遍历原创 2020-08-27 20:49:13 · 342 阅读 · 0 评论 -
C++ STL stack
stack栈是先进后出的,只能在顶部进行插入和删除 不能通过size()来进行遍历,因为从pop顶端元素后,size值发生了变化 所以需要empty()、top()和pop()结合达到遍历效果 构造函数 stack stk; //默认构造函数 stack(const stack &stk); //拷贝构造函数 赋值操作 stack& operator=(const stack &stk); //重载赋值操作符 数据存取 push(elem);//栈顶添加元素 pop..原创 2020-08-26 22:13:28 · 158 阅读 · 0 评论 -
C++ STLdeque基本概念
vector和deque区别: vector对于头部的插入和删除效率低,数据量越大,效率越低 deque相对而言对于头部的插入和删除速度比vector快(deque支持头部和尾部的删除和插入操作) vector访问元素的速度会比deque快,这和两者内部实现有关 deque内部工作原理: deque内部有个中控器,维护每段缓冲器中的内容,缓冲器存放真实数据 中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间 对头部数据和尾部数据的插入和删除比较快,但访问元素时,需要找到指针指向.原创 2020-08-25 21:36:05 · 255 阅读 · 0 评论 -
C++ STL reserve函数预留空间
#include <iostream> #include <string> #include <vector> using namespace std; /* reserve(int len)容器预留len个元素长度,预留位置不初始化,元素不可访问 */ void test1() { vector<int> v1; int num = 0; int *p = NULL; for (int i = 0; i<100000; i++) {原创 2020-08-24 22:20:41 · 482 阅读 · 0 评论 -
C++ STL vector中swap来收缩空间
#include <iostream> #include <string> #include <vector> using namespace std; /* 使用swap函数和匿名对象来收缩空间 */ void test1() { vector<int> v1; for (int i = 0; i<10000; i++) { v1.push_back(i); } cout<<"v1的容量大小:"<<v原创 2020-08-24 21:57:44 · 375 阅读 · 0 评论