如何快速查找C++中想要的元素
我有一张地图,那就是地图。当向量的元素发生变化时,向量必须按照某种规则进行排序。而且向量可能有很多元素。我的问题是如何快速找到我想要的元素 该元素可以由另一个向量共享如何快速查找C++中想要的元素,c++,dictionary,stl,C++,Dictionary,Stl,我有一张地图,那就是地图。当向量的元素发生变化时,向量必须按照某种规则进行排序。而且向量可能有很多元素。我的问题是如何快速找到我想要的元素 该元素可以由另一个向量共享 class line { public: int line_id; string name; int capacity; int price; int cur_connected; }; class no { public: int num_id; string name; string c
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))
当元素被改变时,向量必须被排序。当元素无效时,我必须检查每个有效的元素
向量看起来像火车的座位。我想快速找到哪个座位可以定位
您最好的处理方法是什么。据我所知,您希望检索包含行的向量 如果您可以将行更改为对其容器具有某种反向引用,那么您将立即获得该信息。在每个父对象中插入行时,必须填充这些引用
class line
{
public:
int line_id;
string name;
int capacity;
int price;
int cur_connected;
std::vector<lineCon> owners; // choose the more relevant between
// direct owner `lineCon`,
// final container vector<lineCon>
// or key of the map
};
如何找到你想要的向量,或者如何找到向量中的元素?会有重复吗?你能详细解释一下吗?对不起,我已经编辑了我的问题。谢谢,给我一些想法,但它不能解决如何快速找到向量元素的问题。向量看起来像火车的座位。我想快速找到哪个座位可以被定位。@gougou:当元素被排序时,你有了它的下界。。。但是你认为这个函数不符合你的要求。为什么它不符合要求?我的意思是不仅仅是元素被排序了。
class line
{
public:
int line_id;
string name;
int capacity;
int price;
int cur_connected;
std::vector<lineCon> owners; // choose the more relevant between
// direct owner `lineCon`,
// final container vector<lineCon>
// or key of the map
};
std::map<line*, std::vector<lineCon>>