C++ STL容器的使用
2021-06-09 15:02
标签:void 函数的参数 输入 bcd end size_t wap 引用 operator C++ STL容器的使用 标签:void 函数的参数 输入 bcd end size_t wap 引用 operator 原文地址:https://www.cnblogs.com/coderJ-one/p/14492317.htmlvector
begin()返回指向第一个元素的迭代器
end()返回指向最后一个元素的迭代器
rbegin()返回指向最后一个元素的迭代器
rend()返回指向第一个元素的迭代器
size()返回容器的元素的个数
max_size()返回容器的最大的元素的个数
resize()重新调整容器的容量,无论原来的容量是大于还是小于后来的恶容量都可以
myvector.resize(5);将容器的容量调整为5,如果变短了就直接删除多余的元素,长了就用0将剩余的空间填满
myvector.resize(8,100);将容器的容量调整8,并将多出来的位置用100表示
myvector.resize(12);将容器的容量调整为12,多出的空间用0填充
capacity()返回这个容器在内存空间中最多的连续空间
empty()测试这个容器是不是空的
reserve()重新调整容器的capacity
at(i)返回位置为i处得元素的引用,当超出容器的最后一个位置就抛出一个异常
front()返回第一个元素的引用
back()返回最后一个元素的引用
void assign ( InputIterator first, InputIterator last );将迭代器first和迭代器last之间的元素付给调用这个方法的容器
void assign ( size_type n, const T& u );将n个u付给容器
push_back()在容器的末尾添加元素
pop_back()删除容器最后面的一个元素
iterator insert ( iterator position, const T& x );在迭代器position的前面插入元素x
void insert ( iterator position, size_type n, const T& x );在position的前面插入n个x
template
map
begin()返回指向第一个元素的迭代器
end()返回指向最后一个元素的迭代器
rbegin()返回指向最后一个元素的迭代器
rend()返回指向第一个元素的迭代器
empty()测试map容器是不是空的
size()返回容器的大小
max_size()返回容器最大的容量,这个是相对于内存来讲的
insert()向容器中插入元素
erase(it)删除容器当中it指向的元素,it为迭代器
erase(‘c‘)删除容器中键值为‘c‘的元素
eras(it, mymap.end())删除容器中it和mymap.end()之间的元素,它们两个都是迭代器
foo.swap(bar)交换容器foo和bar中的元素
clear()清空容器
find(‘b‘)返回指向键值为‘b‘的的迭代器,没有的话就指向end()
count(‘c‘)查找键值为‘c‘的元素,在map中返回0或者1,0表示没有这个键值,1表示有,但是在mutimap中就是这个键值出现的次数
lower_bound(‘b‘)返回指向键值为‘b‘的迭代器,当没有这个键值时就返回空的迭代器
upper_bound(‘b‘)返回指向键值为‘b‘的下一个元素的迭代器,没有的话就返回空的迭代器
set
set容器(只存储值不相同的元素,并且按照从小到大的顺序排列)
iterator begin ();返回指向set容器第一个元素的迭代器
iterator end ();返回指向容器最后一个元素的迭代器
reverse_iterator rbegin();返回指向容器最后一个元素的迭代器
reverse_iterator rend();返回指向容器第一个元素的迭代器
bool empty ( ) const;测试容器是否为空
size_type size() const;计算容器当中元素的个数
size_type max_size () const;计算容器的最大容量
pair
stack
bool empty ( ) const;测试栈是不是空的返回1表示空0表示非空
size_type size ( ) const;返回当前栈的元素的个数
value_type top ( );返回当前的栈顶元素,不删除这个元素
const value_type top ( ) const;返回栈顶元素的const引用
void push ( const T& x );将当前的元素x入栈
void pop ( );删除栈顶元素
queue
bool empty ( ) const;测试当前队列是不是空,0表示空,1表示非空
size_type size ( ) const;队列的元素的个数
value_type& front ( );返回队首元素的引用
const value_type front ( ) const;返回队首元素的const值
value_type& back ( );返回队尾元素的引用
const value_type& back ( ) const;返回队尾元素的const值
void push ( const T& x );将x入队列
void pop ( );删除队首元素
multiset, multimap, 基于平衡二叉树(红黑树),动态维护有序序列
size()
empty()
clear()
begin()/end()
++, -- 返回前驱和后继,时间复杂度 O(logn)
set/multiset
insert() 插入一个数
find() 查找一个数
count() 返回某一个数的个数
erase()
(1) 输入是一个数x,删除所有x O(k + logn)
(2) 输入一个迭代器,删除这个迭代器
lower_bound()/upper_bound()
lower_bound(x) 返回大于等于x的最小的数的迭代器
upper_bound(x) 返回大于x的最小的数的迭代器
map/multimap
insert() 插入的数是一个pair
erase() 输入的参数是pair或者迭代器
find()
[] 注意multimap不支持此操作。 时间复杂度是 O(logn)
lower_bound()/upper_bound()
bitset, 圧位
bitset s;
~, &, |, ^
>>,
deque, 双端队列
size()
empty()
clear()
front()/back()
push_back()/pop_back()
push_front()/pop_front()
begin()/end()
priority_queue, 优先队列,默认是大根堆
和队列基本操作相同:
top 访问队头元素
empty 队列是否为空
size 返回队列内元素个数
push 插入元素到队尾 (并排序)
emplace 原地构造一个元素并插入队列
pop 弹出队头元素
swap 交换内容
定义成小根堆的方式:
priority_queue
tolower(char c)函数,tolower()函数的参数是字符类型。
toupper(char c)函数,toupper()函数的参数也是字符类型。
strlwr()将字符串变小写
strupr()将字符串变大写
cctype头文件增加:
isdigit() 用来判断一个字符是否是数字。
isalnum() 用来判断一个字符是否为英文字母或数字,相当于 isalpha(c) || isdigit(c)
isalpha() 用来判断一个字符是否是英文字母,相当于 isupper(c)||islower(c)
fabs(double x)
:对double类型变量取绝对值。
floor(double x)
: 对double 类型变量向下取整
ceil(double x)
: 对double 类型变量向上取整
pow(double x,double y)
: 求 x^y
sqrt(double x)
: 对double 类型变量求算术平方根。
log(double x)
: 对double 类型变量求以自然对数为底的对数。
round(double x)
: 对double 类型变量x进行四舍五入。
sscanf()和sprintf()
流输入输出函数,sscanf可以实现一次性的多个分割:
比如:
将字符数组str中的内容按 "%d:%lf,%s"的格式
写到int型变量n、double型变量db、char型数组变量str2中。
sscanf(str,"%d:%lf,%s",&n,&db,&str2);
相对应的反操作:
sprintf(str,"%d:%lf,%s",n,db,str2);
string的小技巧
string a="abcdeffdfsfsd";
string b=string(a,5);
cout
容器遍历方式
vector