Изучаем С++ создавая игры в ue4 Уилльям Шериф Изучайте программирование С++ с интересным применением реально мира, что позволит вам создавать ваши собственные игры!



Pdf көрінісі
бет191/252
Дата06.01.2022
өлшемі12,25 Mb.
#11940
1   ...   187   188   189   190   191   192   193   194   ...   252
Нахождение элемента в  
Чтобы найти элемент в  наборе 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,  мы  включаем  .  В  следующем 
примере программы, мы заполняем карту предметов парами ключ-значение (key-
value): 
#include  
#include  
#include  
using namespace std; 
int main() 

map items; 
items.insert( make_pair( "apple", 12 ) ); 
items.insert( make_pair( "orange", 1 ) ); 
items.insert( make_pair( "banana", 3 ) ); 
// 
мы можем также использовать квадратные скобки, чтобы вносить предметы в STL map 
items[ "kiwis" ] = 44;  
for( map::iterator it = items.begin(); it != items.end(); ++it ) 

    cout << "items[ " << it->first << " ] = " << it->second << endl; 

}
  
Вот вывод предыдущей программы: 
items[ apple ] = 12 
items[ banana ] = 3 
items[ kiwis ] = 44 
items[ orange ] = 1 
Обратите  внимание,  что  синтаксис  итератора  для  map  STL  немного  отличается  от 
TMap.  Доступ  к  ключу  мы  получаем  используя  it->first  и  к  значению  получаем 
доступ, используя it->second. 


198 | 
С т р а н и ц а
 
 
Обратите  внимание,  что  С++  STL  также  предлагает  от  части  синтаксический  сахар 
для TMap. То есть вы можете использовать квадратные скобки для ввода в C++ STL 
map. Вы не можете использовать квадратные скобки для ввода в TMap.  


Достарыңызбен бөлісу:
1   ...   187   188   189   190   191   192   193   194   ...   252




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет