定义迭代器
string::iterator it;
插入字符 在迭代器之前插入字符
s.insert(it,'p');
删除字符 删除迭代器指向字符
s.erase(it);
删除区间元素 左闭右开区间
s.erase(it,it+2);
替换 从a位置开始将长度为b的串替换为c字符串
s.replace(a,b,c);
查找a字符串第一次出现的位置返回下标值,找不到返回4294967295
cout<< s.find("a")<< endl;
反转字符串
reverse(s.begin(),s.end());
定义迭代器
set<int>::iterator it;
插入值
s.insert(4);
正向遍历
set<int>::iterator it;
for(it=s.begin();it!=s.end();it++)
cout<< *it<< endl;
反向遍历
set<int>::reverse_iterator it;
for(it=s.rbegin(); it!=s.rend(); it++)
cout<< *it<< endl;
删除元素
s.erase(3);
检索元素
it = s.find(1);找到返回迭代器,没找到返回s.end()
重载
struct zp
{
int a,b;
bool operator <(const zp &c) const
{
return c.a>a;
}
};
for(set ::iterator it=s.begin();it!=s.end();it++)
cout<<(*it).a<<" "<<(*it).b<< endl;
struct zp
{
bool operator ()(const int &a,const int &b)
{
return a>b;
}
};
set<int,zp> s;
定义
multiset<string> s; 操作同set
删除 同set用法
迭代器位置或区间元素
删除指定元素返回删除的个数
查找
返回找到的首个迭代器位置,没有找到返回end迭代器
插入 按照键值排序
map< string,int > m;
m["qwe"]=5;
遍历
for(map< string,int>::iterator it=m.begin(); it!=m.end(); it++)
cout<< (*it).first<<" "<< (*it).second<< endl;
反向同set
删除
m.erase("qwe");
查找同set
重载 同set
deque<int> q;
q.push_back(1);
q.push_front(9);//元素个数不变将所有元素往后推一个
q.insert(q.begin()+2,99);//替换迭代器位置云元素
for(int i=3;i>=0;i--)
printf("%d\n",q[i]);
list<int> q;
q.push_back(1);
q.push_front(9);
q.insert(++q.begin(),99);只能++或--
遍历同set
删除
q.remove(3);
q.pop_front();
q.pop_back();
q.erase(q.begin());
find(q.begin(),q.end(),9);
q.unique();//删除连续重复元素
排序 升序
q.sort();
bitset<100010> b;//可下标访问修改
b.any();//是有在1
b.none();//是否无1
b.set(3);//3位置上置为1
b.set();//全置为1
b.size();//大小
b.reset();//和set相反
b.flip();//全部取反
b.flip(3);//位置取反
cout<//计算1的个数
cout<//按照二进制返回unsigned long 值
cout<//全部输出
stack<int> s;
s.push(1);
s.pop();
s.top();
s.empty();
s.size();
queue<int> q;
q.push(1);
q.pop();
q.empty();
q.front();//读队首
q.back();//读队尾
q.size();
用法同queue
重载
priority_queue q;
struct zp
{
int a,b;
bool operator < (const zp &c) const
{
return c.a//小到大
}
};
priority_queue<int,vector<int>,zp> q;
struct zp
{
bool operator () (const int &a,const int &b)
{
return a>b;//小到大
}
};