检查元素是否存在

时间:2017-11-08 15:44:38

标签: c++ data-structures

我有一张多图。

std::multimap<CString, CString> NameInsituteMap;

我必须编写函数,如果name和institute都匹配则返回true;

bool InsituteExist( const CString Name, const CString Insitute )
{

}

如果研究所存在与否,我可以找到密钥并迭代所有要比较的值。

我想知道是否有任何直接的方法,而不是循环遍历所有元素并进行比较。

我愿意使用除multimap以外的任何其他数据结构,如果这样可以让事情变得更好。

2 个答案:

答案 0 :(得分:1)

使用multimap中的equal_range

这里有live example

答案 1 :(得分:0)

您可以有效地从多图中找到给定键的序列元素。没有比线性搜索更好的方法来从这个序列中找到特定的值。

std::map<CString, std::set<CString>>将是一种替代数据结构,它也可以有效地查找与该关键字相关联的集合中是否存在值。它有一个不同的界面。你不必简单地将一个值插入一个键,而是必须&#34;得到&#34;键的值集,插入到该集合中。

如果您的数据结构的地图方面没有被使用,另一个更简单的选择是使用std::set<std::pair<CString, Cstring>>。这可以很容易地用来测试键值对是否在集合中,但当然缺少multimap具有的其他功能。