我有字符串向量。它包含一些名称。我需要搜索向量中是否存在特定的字符串。例如:字符串向量包含“名称”和“年龄”。搜索字符串为“ NameXYZ”。因此,我必须搜索“ NameXYZ”是否包含任何矢量元素。由于矢量元素之一是“名称”,因此应返回true。没有迭代就可以实现这一目标。
答案 0 :(得分:2)
答案是否定的。
在向量中搜索某些内容而不进行迭代是不可能的。
向量是无序且没有映射的容器,因此您需要对其进行迭代以查找某些内容。
我将此链接附加到cppreference网站:
答案 1 :(得分:0)
更复杂的答案是有时
您要寻找的是类似hash set的东西。或者根据您的情况hash map使用Key = Name和Value = Age。
通过定义一个将字符串转换为数字的函数(称为哈希)来工作。当您要测试字符串是否在列表中时,您可以计算它具有的数字。然后,您将获得潜在候选人的列表,并对其进行遍历。
如果幸运的话,每个字符串都有一个唯一的数字,您最多需要测试一个字符串。您仍然需要搜索该数字,但是如果您使用标准容器,则可以确定它是经过优化的。除非您想花费大量时间进行自己的创作,否则这是一个简单的轻松胜利。
但是,请注意,很难使搜索速度超过O(Log(N))复杂度。该方法在后台仍然是O(log(N))复杂的,因为它仍然必须搜索哈希。