保证我有一个(已填写)清单
std::list<std::pair<int,otherobject>> myList;
并且想要查找()此列表中的第一个元素,其中int具有特定值 - 我该怎么做?
进一步解释:
我想将这些对附加到列表中,其中int标识了otherobject但不是唯一的。必须保留这些int / otherobject对到达的顺序。
在访问此列表的元素期间找到int时,必须返回(并删除)该int的第一个出现。
谢谢!
答案 0 :(得分:9)
我想我会使用标准find_if
算法:
auto pos = std::find_if(myList.begin(), myList.end(),
[value](std::pair<int, otherobject> const &b) {
return b.first == value;
});
它为具有所需值的元素提供了一个迭代器 - 从那里,您可以复制值,删除值等,就像使用任何其他迭代器一样。
答案 1 :(得分:1)
根据您的需要,更好的选择是使用多图。 在你的情况下,它会给:
std::multimap<int, otherobject> myMultiMap;
然后在寻找链接到int(myInt)的其他对象时,你会这样做:
std::pair<std::multimap<int, otherobject>::iterator, std::multimap<int, otherobject>::iterator> result = myMultiMap.equal_range(myInt);
for (std::multimap<int,otherobject>::iterator iter=result.first; iter!=result.second; ++iter)
{
std::cout << it->second;
}
这是一个STL容器,因此您可以轻松找到在线文档。