Я создал следующую структуру
struct Datas
{
std::string DataName;
std::vector<boost::variant<std::string, int, double>> Data;
};
struct Topic
{
std::string TopicName;
std::vector<Datas> DataList;
};
struct Group
{
std::string NodeName;
std::vector<Topic> TopicList;
};
....
std::vector<Group> test;
можно ли искать какие ли данные через std::find?
Поиск в векторе с элементами пользовательского типа возможен - через find
с помощью оператора равенства, или find_if
с предоставлением предиката поиска.
Пример - далее.
struct Test
{
string name;
vector<int> data;
bool operator==(const Test& t)
{
return name == t.name;
}
};
int main(int argc, const char * argv[])
{
vector<Test> v{ {"a",{1,2,3}}, {"b",{4,5,6}}, {"c",{7,8,9}} };
// Поиск с использованием оператора равенства (ищем с name=="b")
if (auto t = find(v.begin(),v.end(),Test{"b",{}}); t != v.end())
{
for(auto i: t->data) cout << i << " ";
cout << endl;
}
// Поиск с использованием предиката - тот, где первый элемент data - 7
if (auto t = find_if(v.begin(),v.end(),
[](const Test& q){ return q.data.size()>0 && q.data[0] == 7; });
t != v.end())
{
for(auto i: t->data) cout << i << " ";
cout << endl;
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Столкнулся с одной проблемойУ меня есть таблица, в которой по нажатию кнопок можно добавлять, вставлять между существующих строк и удалять...
Есть картридер для чтения карт с магнитной полосойОперационная система его "задействует" как клавиатуру
Подскажите пожалуйста, есть ли в новых версиях стандарта c++ или в стандартной библиотеке функционал работы с битами в больших массивах данных
Для JavaFX-приложения использую связку: Сontrollerjava, Main