【发布时间】:2014-12-29 07:06:46
【问题描述】:
我有一张地图是map<int,vector>。当向量的元素发生变化时,向量必须按照某种规则进行排序。向量可能有很多元素。我的问题是如何快速找到我想要的元素。
该元素可能被另一个向量共享。
class line
{
public:
int line_id;
string name;
int capacity;
int price;
int cur_connected;
};
class no
{
public:
int num_id;
string name;
string country_name;
int country_id;
};
class lineCon
{
public:
line* l;
int priority;
};
class lineCompare
{
public:
lineCompare(){};
~lineCompare(){};
bool operator()(const lineCon &left,const lineCon &right)
{
if (left.priority < right.priority) //storage first
return true;
else if (left.priority == right.priority)
{
if (left.l->price < right.l->price)
return true;
else
return false;
}
else
return false;
}
};
line *l1 = new line();
line *l2 = new line();
line *l3 = new line();
lineCon lc1= new lineCon();
lineCon lc2= new lineCon();
lineCon lc3= new lineCon();
lineCon lc4= new lineCon();
lc1->l=l1;
lc1->priority=2;
lc2->l=l2;
lc2->priority=3;
lc3->l=l3;
lc3->priority=2;
lc4->l=l3;
lc4->priority=2;
vectory<lineCon> vec;
vec.push_back(lc1);
vec.push_back(lc2);
vec.push_back(lc3);
sort(vec.begin(),vec.end(),lineCompare());
vectory<lineCon> vec2;
vec2.push_back(lc4);
sort(vec2.begin(),vec2.end(),lineCompare());
map<int,vector<lineCon> > h;
h.insert(make_pair(2,vec))
h.insert(make_pair(3,vec2))
当 l3->price=0 改变时 那么它会
sort(vec.begin(),vec.end(),lineCompare());
sort(vec2.begin(),vec2.end(),lineCompare());
当元素改变时,向量必须排序。当元素无效时,我必须检查每个有效的元素。
矢量看起来像火车的座位。我想快速找到可以定位的座位。
你最好的处理方法是什么。
【问题讨论】:
-
如何找到你想要的向量,或者如何找到向量内的元素?可以重复吗?能详细点吗?
-
抱歉,我已经编辑了我的问题。
标签: c++ dictionary stl