将唯一元素插入向量中

时间:2016-01-31 04:07:05

标签: c++ vector

我有一对整数和双向量的向量。例如,我的矢量如下(该对的第一个矢量很小,最多只有10个元素):

 vector<pair<vector<int>, double> >  vecIntDouble;
 vector<int> vecInt1; //always small atmost of size 10 elements
 vecInt1.push_back(0); vecInt1.push_back(1); vecInt1.push_back(3);
 vecIntDouble.push_back(make_pair(vecInt1,0.4));
 vector<int> vecInt2; //always small atmost of size 10 elements
 vecInt2.push_back(0); vecInt2.push_back(2); vecInt2.push_back(3);
 vecIntDouble.push_back(make_pair(vecInt2,0.3));

现在我想在此向量上强制执行以下条件

  1. 当我从此向量中提取元素时,我希望根据对的第二个值以升序检索元素。即,我希望将vecIntDouble排序为:((0,1,3),0.3),((0,2,3),0.4)
  2. 我想将int的向量唯一地插入到向量中。即如果我有另一个需要插入vecIntDouble的条目((0,2,3),0.4),那么在检索过程中,我不应该将这个条目插入到矢量中。
  3. 我知道我可以使用优先级队列。我实现了同样的。但是,我的代码非常慢,因为为了唯一地查找向量而不断进行查找。因此,我正在寻找更快的实施。任何帮助都将深表感谢。

    此外,元素随机插入并从此向量中弹出。即如果我拉((0,1,3),0.3),那么我不希望在下一次检索时弹出这个元素(((0,1,3),0.3),((0,2,3) ,0.4))。

0 个答案:

没有答案