gpt4 book ai didi

c++ - 为什么错误与 'operator==' 不匹配,当使用 `std::find` 时?

转载 作者:搜寻专家 更新时间:2023-10-31 02:03:11 24 4
gpt4 key购买 nike

我正在使用 std::find检查字符串不在 std::vector<std::vector<string>>

错误:

no match for 'operator==' (operand types are 'std::vector<std::__cxx11::basic_string<char> >' and 'const char [6]')

不就是类型不匹配吗?

vector< vector< string>>data;

if(find(data.begin(), data.end(), "START") == data.end()){

printf("Missing \"START\"\n");
return true;`

最佳答案

错误消息的原因在另一个答案中已经很好地解释了。我想提供一个解决问题的方法。

当您尝试查找时,如果 vector 的 vector 中的任何 std::string 元素与 "START" 匹配, 你可以使用标准算法 std::any_of 结合 unary predicate 返回 std::find(vec.cbegin(), vec.cend(), str) != vec.cend();其中 vec 是 vector vector 的每一行。 <强> See a demo here

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

bool isFound(const std::vector<std::vector<std::string>>& data, const std::string &str)
{
const auto found_in_vector = [&str](const std::vector<std::string> & vec)-> bool {
return std::find(vec.cbegin(), vec.cend(), str) != vec.cend(); // if found
};

if (std::any_of(data.cbegin(), data.cend(), found_in_vector))
{
std::cout << "Found\n";
return true;
}

std::cout << "Missing \""<< str << " \"\n";
return false;
}
int main()
{
std::vector<std::vector<std::string>> data;
std::vector<std::string> test{ "START","test" };
data.emplace_back(test);

std::cout << std::boolalpha << isFound(data, std::string{ "START" } );
}

关于c++ - 为什么错误与 'operator==' 不匹配,当使用 `std::find` 时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55887326/

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