gpt4 book ai didi

c++ - 编译器错误 : No matching function for call to find

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:23 24 4
gpt4 key购买 nike

我刚开始学习时尝试使用 vector ,但一直卡在这个错误上。我试图查看 cpp 引用并按照上面的方式进行编写,但仍然出现错误。

 #include<vector>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{

vector<string> vec;

vec.push_back("First");

vec.push_back("second");

for( int i = 0; i < 4 ; i++ )
vec.push_back("RepeatTimes");

vector<string>::iterator fp = find(vec.begin(), vec.end(), "First");


for( vector<string>::iterator it = vec.begin(); it != vec.end(); it++ ) cout<<*it<<" ";

}

错误是:

[Error] no matching function for call to 'find(std::vector<std::basic_string<char> >::iterator, std::vector<std::basic_string<char> >::iterator, const char [6])'

最佳答案

您忘记包含 <algorithm> header 在哪里 std::find生活。

您还应该包括 <string>访问 std::string .
你很可能包括了<string>间接来自另一个 header ,不应依赖它。


由于您正在学习,我将进一步为您的代码建议现代替代方案。

  1. 不是一次一个地推回元素,

    std::vector<std::string> vec;
    vec.push_back("First");
    vec.push_back("second");

    你可以使用初始化列表:

    std::vector<std::string> vec {"First", "Second"};
  2. 而不是使用 for循环重复添加相同的元素,

    for( int i = 0; i < 4 ; i++ )
    vec.push_back("RepeatTimes");

    可以使用insert方法:

    vec.insert(vec.end(), 4, "RepeatTimes");
  3. 考虑在类型名称冗长且不会为代码增加任何可读性值(value)时推导它们:

    auto fp = std::find(vec.begin(), vec.end(), "First");
  4. 使用基于范围的 for在遍历容器的整个范围时循环:

    for (auto it: vec){
    std::cout << it << " ";
    }

关于c++ - 编译器错误 : No matching function for call to find,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40230258/

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