Нахождение элемента в Чтобы найти элемент в наборе STL, мы можем использовать функцию-член find().
Если пункт, который мы ищем, обнаруживается в наборе – set, то наш итератор
указывает на элемент, который мы искали. Если пункта, который мы ищем, нет
наборе – set, то мы получаем set.end(), как показано здесь:
set::iterator it = intSet.find( 7 );
if( it != intSet.end() )
{
// 7
было в intSet, и *it имеет своё значение
cout << "Found " << *it << endl;
}
Упражнение Попросите у пользователя набор из трёх неповторяющихся имён. Примите каждое
имя, одно за одним, и затем выведите их в отсортированном порядке. Если
пользователь повторяет имя, то попросите его другое имя, пока не будет три
имени.
Решение
Решение предыдущего упражнения в следующем коде:
#include #include #include using namespace std;
int main()
{
set names;
//
пока у нас не будет 3 имён, продолжаем цикл
while( names.size() < 3 )
{
cout << names.size() << "
Введите имя " << endl;
string name;
197 |
С т р а н и ц а
cin >> name;
names.insert( name ); //
не надо вводить если уже есть,
}
//
теперь выводим имена. Набор будет отсортирован в порядке
for( set::iterator it = names.begin(); it != names.end(); ++it )
{
cout << *it << endl;
}
}
Карта STL C++ STL С++ объект map – карта во многом похож на объект UE4 TMap. Единственное,
что делает map и не делает TMap, это поддерживает отсортированный порядок в
карте. Сортировка стоит дополнительных затрат, но если вы хотите, чтобы ваша
карта была отсортирована, то выбор STL версии может быть хорошим выбором.
Чтобы использовать С++ STL объект map, мы включаем
198 |
С т р а н и ц а
Обратите внимание, что С++ STL также предлагает от части синтаксический сахар
для TMap. То есть вы можете использовать квадратные скобки для ввода в C++ STL
map. Вы не можете использовать квадратные скобки для ввода в TMap.