Поиск и Вставка в карту с 3 элементами в C++

У меня должна быть карта как это:

typedef std::map<int, float , char> Maptype ;

Что синтаксис должен вставить и ищущие элементы пары в этой карте.

5
задан sbi 6 March 2010 в 10:17
поделиться

3 ответа

Вы не можете иметь три элемента. STL map хранит пару ключ-значение. Вам нужно решить, что вы будете использовать в качестве ключа. После этого вы, вероятно, сможете вложить два других элемента в отдельную карту и использовать ее как:

typedef std::map<int, std::map<float, char> > MapType;

Для вставки в карту используйте operator[] или функцию-член insert. Для поиска можно использовать функцию-член find.

MapType m;
// insert
m.insert(std::make_pair(4, std::make_pair(3.2, 'a')));
m[ -4 ] = make_pair(2.4, 'z');
// fnd
MapType::iterator i = m.find(-4);
if (i != m.end()) { // item exists ...
}

Дополнительно можно посмотреть на Boost.Tuple.

7
ответ дан 18 December 2019 в 06:02
поделиться

В map можно сопоставить только один тип ключа с одним типом данных. Если данные содержат 2 элемента, используйте struct или std::pair.

typedef std::map<int, std::pair<float, char> > Maptype;
...
Maptype m;
m[123] = std::make_pair(0.5f, 'c');
...
std::pair<float, char> val = m[245];
std::cout << "float: " << val.first << ", char: " << val.second << std::endl;
14
ответ дан 18 December 2019 в 06:02
поделиться

Используйте

std::map<std::pair<int, float>, char>

или

std::map<int, std::pair<float, char> >

, в зависимости от того, что правильно.

6
ответ дан 18 December 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: