标准c中string类及stl容器类简介
标准C+中string类及STL容器类简介 一.标准C+库字符串类std:string的用法#includestd:string s1;std:string s3(s2);std:string s2("this is a string");begin 得到指向字符串开头的Iteratorend 得到指向字符串结尾的Iteratorrbegin 得到指向反向字符串开头的Iteratorrend 得到指向反向字符串结尾的Iteratorsize 得到字符串的大小length() 和size函数功能相同max_size 字符串可能的最大大小capacity 在不重新分配内存的情况下,字符串可能的大小empty 判断是否为空operator 取第几个元素,相当于数组c_str 取得C风格的const char* 字符串data 取得字符串内容地址operator= 赋值操作符reserve 预留空间swap 交换函数insert 插入字符append 追加字符push_back 追加字符erase 删除字符串clear 清空字符容器中所有内容resize 重新分配空间assign 和赋值操作符一样replace 替代copy 字符串到空间find 查找,返回基于0的索引号rfind 反向查找find_first_of 查找包含子串中的任何字符,返回第一个位置find_first_not_of 查找不包含子串中的任何字符,返回第一个位置find_last_of 查找包含子串中的任何字符,返回最后一个位置find_last_not_of 查找不包含子串中的任何字符,返回最后一个位置substr(n1,len) 得到字符串从n1开始的长度为len的子串比较字符串(支持所有的关系运算符)compare 比较字符串operator+ 字符串链接operator+= += 操作符operator= 判断是否相等operator!= 判断是否不等于operator从输入流中读入字符串operatorgetline 从输入流中读入一行二.向量类模板std:vector成员函数:#includestd:vector name;std:vector name(size);std:vector name(size,value);std:vector name(myvector);std:vector name(first,last);assign(first,last) 用迭代器first,last所指定的元素取代向量元素assign(num,val) 用val的num份副本取代向量元素at(n) 等价于运算符,返回向量中位置n的元素front() 返回向量中第一个元素的引用back() 返回向量中最后一个元素的引用begin() 返回向量中第一个元素的迭代器end() 返回向量中最后一个元素的迭代器max_size() 返回向量的最大容量(向量所能容纳的最多元素个数)capacity() 返回向量当前所能容纳的最多元素个数clear() 删除向量中所有元素empty() 如果向量为空,返回真erase(start,end) 删除迭代器start end所指定范围内的元素erase(i) 删除迭代器i所指向的元素insert(i,x) 把x插入到迭代器i所指定的位置insert(i,n,x) 把x的n份副本插入到迭代器i所指定的位置insert(i,start,end) 把迭代器start和end所指定的范围内的值插入到迭代器i所指定的位置push_back(x) 把x插入到向量的尾部pop_back() 删除向量中最后一个元素rbegin() 返回一个反向迭代器,该迭代器指向的元素越过了向量中的最后一个元素rend() 返回一个反向迭代器,该迭代器指向向量中第一个元素reverse() 反转元素顺序resize(n,x) 把向量的大小改为n,新元素的初值赋为xsize() 返回向量的大小 swap(vectorref) 交换2个向量的内容三.双端队列类模板std:deque成员函数:#includestd:deque name;std:deque name(size);std:deque name(size,value);std:deque name(mydeque);std:deque name(first,last);其成员函数大部分和std:vector相同PS:push_front(x)把x放到双向队列的头部pop_front() 把双向队列的第一个元素删除 四.链表类模板std:list成员函数:#includestd:list name;std:list name(size);std:list name(size,value);std:list name(mylist);std:list name(first,last);其成员函数大部分和std:vector相同PS:push_front(x)把x放到链表头部pop_front() 把链表第一个元素删除merge(listref) 把listref所引用的链表中的所有元素插入到链表中remove(val) 从链表中删除所有值为val的元素remove_if(pred) 删除链表中谓词pred为真的元素(谓词即为元素存储和检索的描述,如std:less,std:greater那么就按降序/升序排列,你也可以定义自己的谓词)sort() 根据默认的谓词对链表排序sort(pred) 根据给定的谓词对链表排序unique() 删除所有重复的元素,使链表中没有重复元素(在这之前要对链表中的原始进行排序)unique(pred) 根据谓词pred删除所有重复的元素,使链表中没有重复元素注意:vector和deque支持随机访问,而list不支持随机访问,因此不支持访问!五.容器适配器堆栈类std:stack成员函数:#includestack实现先进后出的操作std:stack name;type为堆栈操作的数据类型container为实现堆栈所用的容器类型,可以为std:vector,std:deque,std:list例如std:stack IntStack;管理成员函数只有:empty(),size(),top(),push(),pop()六.容器适配器队列类std:queue成员函数:#includequeue实现先进先出的操作std:queue name;type为队列操作的数据类型container为实现队列所用的容器类型,可以为std:vector,std:deque,std:list管理成员函数只有:empty(),size(),front(),back(),push(),pop()七关联式容器:集合类std:set,多重集合类std:multiset,映射类std:map,多重映射类std:multimap,位集合std:bitset八通用算法(对以上STL均适用)#include1非修正序列算法:2修正序列算法:3排序算法:4数值算法:九迭代器(类似指针的功能,对容器的内容进行访问)#include例如:std:vector IntVector;std:vector:iterator first=IntVector.begin();/begin()得到指向vector开头的Iterator,*first得到开头一个元素的值std:vector:iterator last=IntVector.end();/end()得到指向vector结尾的Iterator,*last得到最后一个元素的值