gpt4 book ai didi

c++ - 遍历 std::vector 以从 std::string 数组中查找匹配项,更简单的方法?

转载 作者:可可西里 更新时间:2023-11-01 10:23:42 25 4
gpt4 key购买 nike

我循环遍历 std::vector 和 std::string 数组以从 vector 中找到匹配项。

例子:

#include <iostream>
#include <vector>
#include <string>


int main()
{

std::cout << "Searching...\n";

std::vector<std::string> myVector;

myVector.push_back("Word");
myVector.push_back("Word2");
myVector.push_back("Word4");
myVector.push_back("Word6");
myVector.push_back("Word7");


std::string myStringArr[] =
{
"Word",
"Word1",
"Word2",
"Word3",
"Word4",
"Word5",
"Word6",
"Word7"
};

for (auto Vec : myVector)
{
for(auto Str : myStringArr)
{
if(Vec == Str)
{
std::cout << "Found: " << Vec << std::endl;
}
}
}


std::cin.ignore(2);
return 0;
}

这很好用。但我来自 C 语言(试图进入 C++ 11),不确定这是否是最佳解决方案。

平台是windows,我(目前)没有使用boost之类的任何外部库,从代码中可以看出。

是否有更好/更简洁的方法来实现相同的结果?

最佳答案

只要 vector 和字符串数组不太长,您的解决方案就可以正常工作。
代码的小改进:不要对简单类型使用 auto,它的可读性较差(您可以改用 const string&)。

您可以做一些更有效的事情:您的算法复杂度为 O(NxM),其中 N 和 M 是 vector 和数组的大小。
将 vector 的值存储在 hash_set 中,然后检查它们是否在数组中将是 O(N+M)。

关于c++ - 遍历 std::vector 以从 std::string 数组中查找匹配项,更简单的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24430699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com