cpp4-stl
YeeKal
•
•
"#"
vector
//初始化
vector<int> a(10);
vector<int> a(10,1);
vector<int> a(b);
vector<int> a(b.begin(),b.begin+3);
int b[7]={1,2,3,4,5,9,8};
vector<int> a(b,b+7);
a.back(); //返回a的最后一个元素
a.front(); //返回a的第一个元素
a.begin(); //
a.end(); //
a.rbegin();
a.rend();
a.empty(); //判断a是否为空,空则返回ture,不空则返回false
a.push_back();
a.pop_back(); //delete last one
//assign
//assign会清空a的内存重新分配数据
void assign(const_iterator first,const_iterator last);
void assign(size_type n,const T& x = T());
a.assign(b.begin(), b.begin()+3); //赋值b中的数据
a.assign(4,2); //赋值4个2
//insert
iterator insert(iterator it,const T& x);//向量中迭代器指向元素前增加一个元素x
iterator insert(iterator it,int n,const T& x);//向量中迭代器指向元素前增加n个相同的元素x
iterator insert(iterator it,const_iterator first,const_iterator last);//向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据
//erase
iterator erase(iterator it);//删除向量中迭代器指向元素
iterator erase(iterator first,iterator last);//删除向量中[first,last)中元素
//size
a.size(); //元素个数
a.capacity(); //容器能够存储的元素个数,有:capacity() >= size()
a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,其值随机
a.resize(10,2); //将a的现有元素个数调至10个,多则删,少则补,其值为2
a.reserve(100); //将a的容量(capacity)扩充至100,也就是说现在测试a.capacity();的时候返回值是100
//reserve只是分配了空间,但是并没有对象,不能用[]取值。对原有的值不影响
map
- unordered_map: hashed by keys
- map
-
map中不能使用指针
-
map和set的元素没有顺序,故insert函数不需要制定位置
- vector插入元素有顺序,故需要指明迭代器
- string同vector,但是string的位置指定可以是迭代器也可以是size_t
unordered_map<char,int> map;
//insert && visit
map['a']=3;
pair<string,double> myshopping ("baking powder",0.3);
myrecipe.insert (myshopping); // 复制插入
myrecipe.insert (make_pair<string,double>("eggs",6.0)); // 移动插入
myrecipe.insert (mypantry.begin(), mypantry.end()); // 范围插入
myrecipe.insert ({{"sugar",0.8},{"salt",0.1}}); // 初始化数组插入(可以用二维一次插入多个元素,也可以用一维插入一个元素)
myrecipe["coffee"] = 10.0; //数组形式插入
//遍历
//for ( auto it = map.begin(); it != map.end(); ++it )
for(auto p:map){
cout<<p.first()<<":"<<p.second()<<endl;
}
set
- unordered_set: hashed by keys
- set
set<int> s;
set<int> s={1,2,3,4,5};
size();
pair<set<T>::iterator,bool> insert(T);//判断集合元素是否已存在
iterator find( const Key& key );
begin();
end();
//set 中有自定义的默认排序,插入完成之后排序就完成了
string
//operator
// ==
// >
// <
// >=
// <=
// !=
// +
// +=
// []
s = s + 'a' + 'b' + 'c'; //这样写是可以的
s += 'a' + 'b' + 'c'; //这样写是不对的
//add
append(str);
append( size_type num, char ch );
append( const char *str );
assign();//参数同append
size_type copy( char *str, size_type num, size_type index );//拷贝自己的num个字符到str中(从索引index开始)。返回值是拷贝的字符数
insert();//迭代器或者位置都可以
iterator insert( iterator i, const char &ch );
basic_string &insert( size_type index, const basic_string &str );
basic_string &insert( size_type index, const char *str );
basic_string &insert( size_type index1, const basic_string &str, size_type index2, size_type num );
basic_string &insert( size_type index, const char *str, size_type num );
basic_string &insert( size_type index, size_type num, char ch );
void insert( iterator i, size_type num, const char &ch );
void insert( iterator i, iterator start, iterator end );
basic_string substr( size_type index, size_type num = npos );
//erase
iterator erase( iterator pos );
iterator erase( iterator start, iterator end );
basic_string &erase( size_type index = 0, size_type num = npos );
//find
find( char, pos=0);
find(str,pos=0,len); //从前len长度里查找
find_first_of(str,pos); //在源串中从位置pos起往后查找,只要在源串中遇到一个字符,该字符与目标串中任意一个字符相同,就停止查找
length();
size();//
const char * c_str(); //string to char *
string::iterator begin();
string::iterator end();
empty();
c中的字符判断函数
isalpha(); //check if character is alphabetic
isupper(); //check is upper
islower(); //check is lower
isdigit(); //check is number
queue & stack
队列: 先进先出(FIFO) 栈: 先进后出(FILO)
#include <queue>
queue<int> q;
empty();
size();
front();
back();
push(); //insert element at back
pop();//remove element at front
#include <stack>
stack<int> s;
empty();
size();
top();
push();// push to stack
pop();
//priority_queue: 优先队列
algorithm
#include <algorithm>
int a[10];
vector<int> v;
//find
vector<int>::iterator s=find(v.begin(),v.end(),50);
//fill
fill(Iterator first, Iterator last, const T& value);
fill(v.begin(), v.end(), -1);
fill(a,a+10,-1);
//com
const T& min( const T& a, const T& b); // Returns the smaller of a and b.
ForwardIt min_element(ForwardIt first, ForwardIt last); //Finds the smallest element in the range [first, last)
int a[10];
min_element(a,a+10);//
sort(v.begin(),v.end());
#include<numeric>
accumulate(ivec.begin() , ivec.end() , 0); // 求和