C++ 编程技巧锦集(一)

C++刷题精髓在STL编程,还有一些函数。下面我就总结一下本人在刷题过程中,每逢遇见总要百度的内容………………(大概率因为本人刷题太少了)

1. map

map<string, int> m;

map<int, int> m;

key-value一一对应,一个key只能有一个value,且m按key自动排序

begin()          返回指向map头部的迭代器
clear()         删除所有元素
count()          返回指定元素出现的次数
empty()          如果map为空则返回true
end()            返回指向map末尾的迭代器
erase()          删除一个元素
find()           查找一个元素
insert()         插入元素
size()           返回map中元素的个数

迭代:

map<int, int> ::iterator it;
for(it = m.begin();it != m.end();it++)
{
    cout << it->first << it->second << endl;    
}

2. vector

 vector<int> vec;

尾部插入数字:vec.push_back(a);

使用下标访问元素,cout<<vec[0]<<endl;

插入元素:    vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;

删除元素:    vec.erase(vec.begin()+2);删除第3个元素

vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始

向量大小:vec.size();

清空:vec.clear();

迭代:

vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
    cout<<*it<<endl;

3. set

 set<int> s;

begin()--返回指向第一个元素的迭代器

clear()--清除所有元素

count()--返回某个值元素的个数

empty()--如果集合为空,返回true

end()--返回指向最后一个元素的迭代器

erase()--删除集合中的元素

find()--返回一个指向被查找到元素的迭代器

insert()--在集合中插入元素

size()--集合中元素的数目

swap()--交换两个集合变量

迭代:

set<int>::iterator it;
for(it=s.begin();it!=s.end();it++)
    cout<<*it<<endl;

4. queue

 queue<int> q;

入队,q.push(x); 将x 接到队列的末端。
出队,q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问队首元素,q.front(),即最早被压入队列的元素。
访问队尾元素,q.back(),即最后被压入队列的元素。
判断队列空,q.empty(),当队列空时,返回true。
访问队列中的元素个数,q.size()

while(!q.empty())
{
    q.front();
    q.pop();  
}

5. priority_queue

https://blog.csdn.net/weixin_36888577/article/details/79937886
priority_queue <int,vector<int>,greater<int> > q;      //升序队列
priority_queue <int,vector<int>,less<int> >q;           //降序队列
greater和less是std实现的两个仿函数(就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了)

和队列基本操作相同:

  • top 访问队头元素
  • empty 队列是否为空
  • size 返回队列内元素个数
  • push 插入元素到队尾 (并排序)
  • emplace 原地构造一个元素并插入队列
  • pop 弹出队头元素
  • swap 交换内容

6. stack

stack<int> s1;
stack<string> s2;
入栈,s.push(x);
出栈,s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素。
访问栈顶,s.top()
判断栈空,s.empty(),当栈空时,返回true。
访问栈中的元素个数,s.size()。

while(!s.empty())
{
    s.top();
    s.pop();  
}
原文地址:https://www.cnblogs.com/zcl843264327/p/11192286.html