概述
一:list
#include <list>
list 是一个双向链表,可以高效的进行插入和删除操作;但是由于是链表,所以进行固定某一位置的访问时效率会比较低。
而且由于它的空间是不连续的,所以不支持用下标去随机访问。(特点和vector正好相反)
二:vector
#include <vector>
vector是一个动态数组,由于是数组,所以他的插入和删除操作都会导致其他数据的位置移动,所以插入和删除没有list高效。
但是他对固定位置的数据访问就比list高效很多。他比list多了vector::at()函数,可以让用户直接去访问某个位置的指,也支持直接像c语言一样用数组下标去访问。
关于list和vector的选择,如果是有对某个位置有固定访问的场景,比如房间号、电梯楼层,可以选择用vector;其他用不到固定位置访问的,可以用list,比如数据的缓存,需要快速的插入和取出。
函数 | 表述 |
c.assign(beg,end) c.assign(n,elem) | 将[beg; end)区间中的数据赋值给c。 将n个elem的拷贝赋值给c。 |
c.at(idx) | 传回索引idx所指的数据,如果idx越界,抛出out_of_range。 |
c.back() | 传回最后一个数据,不检查这个数据是否存在。 |
c.begin() | 传回迭代器重的可一个数据。 |
c.capacity() | 返回容器中数据个数。 |
c.clear() | 移除容器中所有数据。 |
c.empty() | 判断容器是否为空。 |
c.end() | 指向迭代器中的最后一个数据地址。 |
c.erase(pos) c.erase(beg,end) | 删除pos位置的数据,传回下一个数据的位置。 删除[beg,end)区间的数据,传回下一个数据的位置。 |
c.front() | 传回第一个数据。 |
get_allocator | 使用构造函数返回一个拷贝。 |
c.insert(pos,elem) c.insert(pos,n,elem) c.insert(pos,beg,end) | 在pos位置插入一个elem拷贝,传回新数据位置。 在pos位置插入n个elem数据。无返回值。 在pos位置插入在[beg,end)区间的数据。无返回值。 |
c.max_size() | 返回容器中最大数据的数量。 |
c.pop_back() | 删除最后一个数据。 |
c.push_back(elem) | 在尾部加入一个数据。 |
c.rbegin() | 传回一个逆向队列的第一个数据。 |
c.rend() | 传回一个逆向队列的最后一个数据的下一个位置。 |
c.resize(num) | 重新指定队列的长度。 |
c.reserve() | 保留适当的容量。 |
c.size() | 返回容器中实际数据的个数。 |
c1.swap(c2) swap(c1,c2) | 将c1和c2元素互换。 同上操作。 |
vector<Elem> c vector <Elem> c1(c2) vector <Elem> c(n) vector <Elem> c(n, elem) vector <Elem> c(beg,end) c.~ vector <Elem>() | 创建一个空的vector。 复制一个vector。 创建一个vector,含有n个数据,数据均已缺省构造产生。 创建一个含有n个elem拷贝的vector。 创建一个以[beg;end)区间的vector。 销毁所有数据,释放内存。 |
三:map
#include <map[>
std::map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下std map内部数据的组织,std map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这树具有对数据自动排序的功能,所以在std map内部所有的数据都是有序的。
Member classes
value_compare | compares objects of type value_type (class) |
Member functions
(constructor) | constructs the map (public member function) |
(destructor) | destructs the map (public member function) |
operator= | assigns values to the container (public member function) |
get_allocator | returns the associated allocator (public member function) |
Element access | |
at (C++11) | access specified element with bounds checking (public member function) |
operator[] | access or insert specified element (public member function) |
Iterators | |
begincbegin | returns an iterator to the beginning (public member function) |
endcend | returns an iterator to the end (public member function) |
rbegincrbegin | returns a reverse iterator to the beginning (public member function) |
rendcrend | returns a reverse iterator to the end (public member function) |
Capacity | |
empty | checks whether the container is empty (public member function) |
size | returns the number of elements (public member function) |
max_size | returns the maximum possible number of elements (public member function) |
Modifiers | |
clear | clears the contents (public member function) |
insert | inserts elements or nodes (since C++17) (public member function) |
insert_or_assign (C++17) | inserts an element or assigns to the current element if the key already exists (public member function) |
emplace (C++11) | constructs element in-place (public member function) |
emplace_hint (C++11) | constructs elements in-place using a hint (public member function) |
try_emplace (C++17) | inserts in-place if the key does not exist, does nothing if the key exists (public member function) |
erase | erases elements (public member function) |
swap | swaps the contents (public member function) |
extract (C++17) | extracts nodes from the container (public member function) |
merge (C++17) | splices nodes from another container (public member function) |
Lookup | |
count | returns the number of elements matching specific key (public member function) |
find | finds element with specific key (public member function) |
contains (C++20) | checks if the container contains element with specific key (public member function) |
equal_range | returns range of elements matching a specific key (public member function) |
lower_bound | returns an iterator to the first element not less than the given key (public member function) |
upper_bound | returns an iterator to the first element greater than the given key (public member function) |
Observers | |
key_comp | returns the function that compares keys (public member function) |
value_comp | returns the function that compares keys in objects of type value_type (public member function) |
Non-member functions
operator==operator!=operator<operator<=operator>operator>= | lexicographically compares the values in the map (function template) |
std::swap(std::map) | specializes the std::swap algorithm (function template) |
最后
以上就是英俊背包为你收集整理的C++ STC常用容器list vector map总结的全部内容,希望文章能够帮你解决C++ STC常用容器list vector map总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复