leetcode笔记|CPP stl快速参考

  • 容器(Containers)

  • 分配器(Allocators)

  • 算法(Algorithm)

  • 迭代器(Iterators)

  • 适配器(Adapters)

  • 仿函数(Functors)

String

创建

  • string(); //创建一个空的字符串 例如: string str;

  • string(const char* s); //使用字符串s初始化

  • string(const string& str); //拷贝构造

赋值 =

  • string& operator=(const string &s); //把字符串s赋给当前的字符串

拼接 +=

  • string& operator+=(const string& str); //重载+=操作符

  • string& append(const string &s); //同operator+=(const string& str)

查找 find rfind(找不到-1)替换replace

int find(const string& str, int pos = 0) const; //查找str第一次出现位置,从pos开始查找

int rfind(const string& str, int pos = npos) const; //查找str最后一次位置,从pos开始查找

string& replace(int pos, int n, const string& str); //替换从pos开始n个字符为字符串str

比较 compare

  • int compare(const string &s) const; //与字符串s比较

  • int compare(const char *s) const; //与字符串s比较

存取 [],at 当字符数组

  • char& operator[](int n); //通过[]方式取字符

  • char& at(int n); //通过at方法获取字符

插入和删除 insert erase

  • string& insert(int pos, const string& str); //插入字符串

  • string& erase(int pos, int n = npos); //删除从Pos开始的n个字符

子串 substr

string substr(int pos = 0, int n = npos) const;

Vector

创建

  • vector<T> v; //采用模板实现类实现,默认构造函数

  • vector(n, elem); //构造函数将n个elem拷贝给本身。

  • vector(const vector &vec); //拷贝构造函数。

赋值 = 交换 swap

  • vector& operator=(const vector &vec);//重载等号操作符

  • swap(vec); // 将vec与本身的元素互换,可用于收缩内存

  • vector<int>(v).swap(v); //匿名对象

容量 empty ,capacity ,size ,resize

empty(); //判断容器是否为空

capacity(); //容器的容量

size(); //返回容器中元素的个数

resize(int num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。

//如果容器变短,则末尾超出容器长度的元素被删除。

resize(int num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。

//如果容器变短,则末尾超出容器长度的元素被删除

插入删除 push_back, pop_back, insert, erase, clear

push_back(ele); //尾部插入元素ele

pop_back(); //删除最后一个元素

insert(const_iterator pos, ele); //迭代器指向位置pos插入元素ele

erase(const_iterator pos); //删除迭代器指向的元素

clear(); //删除容器中所有元素

存取 at,[],front,back

  • at(int idx); //返回索引idx所指的数据

  • operator[]; //返回索引idx所指的数据

  • front(); //返回容器中第一个数据元素

  • back(); //返回容器中最后一个数据元素

预留空间 reserve

  • reserve(int len);//容器预留len个元素长度,预留位置不初始化,元素不可访问,数据量较大时可用于减少vector在动态扩展容量时的扩展次数。

Deque 双端数组

创建

  • deque<T> deq; //默认构造形式

  • deque(n, elem); //构造函数将n个elem拷贝给本身。

  • deque(const deque &deq); //拷贝构造函数

大小操作(与vector相比无capacity)

deque.empty(); //判断容器是否为空

deque.size(); //返回容器中元素的个数

deque.resize(num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。

//如果容器变短,则末尾超出容器长度的元素被删除。

deque.resize(num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。

插入和删除(比vector多了头部的操作) xx_front

push_back(elem); //在容器尾部添加一个数据

push_front(elem); //在容器头部插入一个数据

pop_back(); //删除容器最后一个数据

pop_front(); //删除容器第一个数据

insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位

clear(); //清空容器的所有数据

erase(pos); //删除pos位置的数据,返回下一个数据的位置

deque 数据存取(同vector)

  • at(int idx); //返回索引idx所指的数据

  • operator[]; //返回索引idx所指的数据

  • front(); //返回容器中第一个数据元素

  • back(); //返回容器中最后一个数据元素

stack

创建

  • stack<T> stk; //stack采用模板类实现, stack对象的默认构造形式

  • stack(const stack &stk); //拷贝构造函数

赋值= 和交换swap

  • stack& operator=(const stack &stk); //重载等号操作符

  • swap(stk); //将stk与本身的元素互换

大小 empty,size

  • push(elem); //向栈顶添加元素

  • pop(); //从栈顶移除第一个元素

栈顶元素 top

list:双向循环链表

插入操作和删除操作都不会造成原有list迭代器的失效,这在vector是不成立的。

创建

  • list<T> lst; //list采用采用模板类实现,对象的默认构造形式:

  • list(n,elem); //构造函数将n个elem拷贝给本身。

  • list(const list &lst); //拷贝构造函数。

赋值=交换swap

  • list& operator=(const list &lst); //重载等号操作符

  • swap(lst); //将lst与本身的元素互换。

大小 size, empty, resize

size(); //返回容器中元素的个数

empty(); //判断容器是否为空

resize(num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。

//如果容器变短,则末尾超出容器长度的元素被删除。

resize(num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。

插入删除 push/pop_back/front,insert,clear,erase,remove

push_back(elem);//在容器尾部加入一个元素

pop_back();//删除容器中最后一个元素

push_front(elem);//在容器开头插入一个元素

pop_front();//从容器开头移除第一个元素

insert(pos,elem);//在pos位置插elem元素的拷贝,返回新数据的位置。

clear();//移除容器的所有数据

erase(pos);//删除pos位置的数据,返回下一个数据的位置。

remove(elem);//删除容器中所有与elem值匹配的元素。

存取 front,back

  • front(); //返回第一个元素。

  • back(); //返回最后一个元素。

反转排序 reverse,sort

  • reverse(); //反转链表

  • sort(); //链表排序

  • sort(MyCompare); //使用仿函数自定义排序规则

Set

创建

  • set<T> st; //默认构造函数:

  • set(const set &st); //拷贝构造函数

赋值=,交换swap

  • set& operator=(const set &st); //重载等号操作符

  • swap(st); //交换两个集合容器

大小 size,empty

  • size(); //返回容器中元素的数目

  • empty(); //判断容器是否为空

插入insert,删除clear,erase

  • insert(elem); //在容器中插入元素。

  • clear(); //清除所有元素

  • erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器。

  • erase(elem); //删除容器中值为elem的元素。

查找find,统计count

  • find(key); //查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();

  • count(key); //统计key的元素个数(对于set结果为0或1)

排序

插入元素时自动排序,默认为从小到大,可在定义容器时使用仿函数自定义排序规则。

  • set<int, MyCompare> s; //Mycompare是自定义的类,类内重载了()(谓词)

  • set<Person, comparePerson> s; //set存放自定义数据类型,必须指定排序规则

map/multimap

pair 对组构造函数

  • pair<type, type> p ( value1, value2 );

  • pair<type, type> p = make_pair( value1, value2 );

map 构造函数

  • map<T1, T2> mp; //map默认构造函数:

  • map(const map &mp); //拷贝构造函数

大小操作 size empty

插入和删除 insert, clear, erase

查找find 统计count

map排序

插入键值对时自动排序,默认为按key值从小到大,可在定义容器时使用仿函数自定义排序规则。

map<int, int, MyCompare> m; //此处的MyCompare为自定义排序规则,同set容器

map<Person, int, comparePerson> s; //若键值为自定义数据类型(少用),必须指定排序规则,同set容器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值