最近刚好有个项目需要加强下处理性能,因此学习了一下c++的使用,基础的肯定是各种stl的使用,复合结构自己摸索了几天,写出来给大家一起分享下,有不足的地方欢迎指正,废话不多说,直接上代码:
#include <iostream>
#include <vector>
#include <map>
using namespace std;
struct order
{
string oid,cancel_state,direct;
float remain_vol,total_vol;
};
typedef map<float,vector<order> > dict;
typedef std::vector<order> dou_list;
int main(){
dict core_list;
dou_list v_order1,v_order2;
order order1;
order order2;
order1.oid="zhou123";
order1.remain_vol=0.2;
order1.total_vol=0.2;
order1.cancel_state="no";
order1.direct="buy";
order2.oid="123456";
order2.remain_vol=0.6;
order2.total_vol=0.6;
order2.direct="buy";
order2.cancel_state="yes";
v_order1.push_back(order1);
v_order1.push_back(order2);
v_order2.push_back(order2);
core_list[100.0]=v_order1;
core_list[101.0]= v_order2;
dict::iterator i;
for(i=core_list.begin();i!=core_list.end();){
for(int j=0;j<i->second.size();++j){
cout<<"price"<<i->first << "order"<<i->second.at(j).oid<<" "<<i->second.at(j).remain_vol<<" "<<i->second.at(j).total_vol<<" "<<i->second.at(j).cancel_state<<" "<<i->second.at(j).direct<<endl;
}
++i;
}
for(i=core_list.begin();i!=core_list.end();){
if(i->first == 100.0){
for(dou_list::iterator j = i->second.begin();j!=i->second.end();){
order temp = *j;
if(temp.cancel_state=="yes"){
i->second.erase(j);
}
else{
++j;
}
}
}
++i;
}
dict::iterator d;
for(d=core_list.begin();d!=core_list.end();){
if(d->first == 100.0){
order order1;
order1.oid="qi123";
order1.remain_vol=0.4;
order1.total_vol=0.4;
order1.cancel_state="no";
order1.direct="buy";
d->second.push_back(order1);
core_list[d->first] = d->second;
}
++d;
}
dict::iterator z;
for( z=core_list.begin();z!=core_list.end();){
for(int j=0;j<z->second.size();++j){
cout<<"second_price"<<z->first << "order"<<z->second.at(j).oid<<" "<<z->second.at(j).remain_vol<<" "<<z->second.at(j).total_vol<<" "<<z->second.at(j).cancel_state<<" "<<z->second.at(j).direct<<endl;
}
++z;
}
if(core_list[100.0].size() != 0){
cout<<"*******"<<endl;
for(int j=0;j<core_list[100.0].size();++j){
cout<<"#######"<<core_list[100.0].at(j).remain_vol<<endl;
if(core_list[100.0].at(j).direct == "buy"){
cout<<"fix_befor:"<<core_list[100.0].at(j).remain_vol<<endl;
core_list[100.0].at(j).remain_vol = 0.0;
cout<<"fix_after:"<<core_list[100.0].at(j).remain_vol<<endl;
}
}
}
for(dict::iterator y=core_list.begin();y!=core_list.end();){
for(int j=0;j<y->second.size();++j){
cout<<"third_price"<<y->first << "order"<<y->second.at(j).oid<<" "<<y->second.at(j).remain_vol<<" "<<y->second.at(j).total_vol<<" "<<y->second.at(j).cancel_state<<" "<<y->second.at(j).direct<<endl;
}
++y;
}
return 0;
}