vector与操作的顺序有关,与数值本身无关,可以重复存在
【vector与结构体】
#include <cstdio>
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
const int maxn = 100010;
int buy[maxn],sell[maxn];
struct node
{
int p, d;
};
vector<node>veb, ves;
int main()
{
int n, s;
while(~scanf("%d%d", &n, &s))
{
char oo[5];
int p, d;
memset(buy, 0, sizeof(buy));
memset(sell, 0, sizeof(sell));
for(int i = 0;i<n;i++)
{
scanf("%s%d%d", oo, &p, &d);
if(oo[0] == 'B') buy[p]+=d;
else sell[p]+=d;
}
veb.clear();
ves.clear();
for(int i = 0;i<maxn && ves.size()<s;i++)
{
if(sell[i])
ves.push_back(node{i, sell[i]});//注意写法,较简洁的
}
for(int i = maxn;i>=0 && veb.size()<s;i--)
{
if(buy[i])
veb.push_back(node{i, buy[i]});
}
for(int i = ves.size()-1;i>=0;i--)
printf("S %d %d\n", ves[i].p, ves[i].d);
for (int i = 0;i<veb.size();i++)
printf("B %d %d\n", veb[i].p, veb[i].d);
}
return 0;
}
【push_back与insert】
push_back插在已有的数的后面
insert要指定插入位置
#include <iostream>
#include <list>
#include <vector>
#include <deque>
#include <set>
using namespace std;
int main(void)
{
vector<int> v;
v.insert(v.begin(),1); //如果使用insert(1)不指定插入位置,会出错
v.insert(v.begin(),2);
v.insert(v.begin(),1);
v.insert(v.begin(),3);
vector<int>::iterator vp = v.begin();
for(vp = v.begin();vp < v.end(); vp++)
cout << *vp << endl;
return 0;
}