Эта ссылка будет использоваться для поиска элемента в списке векторов или шаблонов.

ользую набор для хранения структур, которые содержат несколько строк. Я хочу использовать функцию find () для множеств. Однако, так как набор содержит структуры, он не работает. Я хочу, чтобы find () посмотрел на одну из строк в структуре, когда она найдет. Как это может быть сделано?

Вот код, который я пытался использовать. Он работает нормально, за исключением части, где используется find ().

#include <iostream>
#include <string>
#include <set>
using namespace std;

struct test
{
    string key;
    string data;
};

bool operator<(const test & l, const test & r)
{
    return l.key < r.key;
}

bool operator==(const test & l, const test & r)
{
    return l.key == r.key;
}

set<test> s;

int main()
{
    test newmember;
    newmember.key = "key";
    newmember.data = "data";
    s.insert(newmember);
    s.find("key");
}

Вот сообщения об ошибках, когда я пытаюсь скомпилировать это:

test.cpp:30:7: error: no matching member function for call to 'find'
    s.find("key");
    ~~^~~~
In file included from test.cpp:3:
In file included from /usr/include/c++/4.2.1/set:65:
/usr/include/c++/4.2.1/bits/stl_set.h:429:7: note: candidate function not viable: no known conversion from 'const char [4]' to 'const key_type' (aka 'const test') for 1st argument
      find(const key_type& __x)
      ^
/usr/include/c++/4.2.1/bits/stl_set.h:433:7: note: candidate function not viable: no known conversion from 'const char [4]' to 'const key_type' (aka 'const test') for 1st argument
      find(const key_type& __x) const
      ^
1 error generated.

Ответы на вопрос(3)

Ваш ответ на вопрос