jeudi 12 septembre 2019

C++ simply code about find_if(), but can't compile successful

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

using namespace std;

int main()
{
    vector<string> svec;
    string tmp;
    while (cin >> tmp) {
        if (find(svec.begin(), svec.end(), tmp) != svec.end())
            svec.push_back(tmp);
    }

    for (auto const &str : svec) {
        cout << str << " ";
    }
    cout << endl;
}

error msg as below
11_8.cc: In function ‘int main()’: 11_8.cc:13:47: error: no matching function for call to ‘find(std::vector >::iterator, std::vector >::iterator, std::__cxx11::string&)’ if (find(svec.begin(), svec.end(), tmp) != svec.end()) ^ In file included from /usr/include/c++/7/bits/locale_facets.h:48:0, from /usr/include/c++/7/bits/basic_ios.h:37, from /usr/include/c++/7/ios:44, from /usr/include/c++/7/ostream:38, from /usr/include/c++/7/iostream:39, from 11_8.cc:3: /usr/include/c++/7/bits/streambuf_iterator.h:369:5: note: candidate: template typename __gnu_cxx::__enable_if::__value, std::istreambuf_iterator<_CharT> >::__type std::find(std::istreambuf_iterator<_CharT>, std::istreambuf_iterator<_CharT>, const _CharT2&) find(istreambuf_iterator<_CharT> __first, ^~~~ /usr/include/c++/7/bits/streambuf_iterator.h:369:5: note: template argument deduction/substitution failed: 11_8.cc:13:47: note: ‘__gnu_cxx::__normal_iterator*, std::vector > >’ is not derived from ‘std::istreambuf_iterator<_CharT>’ if (find(svec.begin(), svec.end(), tmp) != svec.end()) ^

Aucun commentaire:

Enregistrer un commentaire