Форум программистов, компьютерный форум CyberForum.ru

Map: обращение к значению (класс) через [] - C++

Восстановить пароль Регистрация
 
Кран
0 / 0 / 0
Регистрация: 16.02.2015
Сообщений: 9
07.07.2015, 11:44     Map: обращение к значению (класс) через [] #1
Всем добрый день.
Подскажите пожалуйста почему в 14 строчке без пустого конструктора пример не компилится ?
Ведь я обращаюсь к объекту ...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct A
{
  int val;
  string str;
  A(int i, string msg) : val(i),str(msg) {}
  A() {}
};
 
int main()
{
  map<int,A> tmp;
  tmp.insert({1,A(1,"aaa")});
  tmp.insert({2,A(2,"bbb")});
  cout << tmp[1].str << endl;
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2015, 11:44     Map: обращение к значению (класс) через []
Посмотрите здесь:

Отсортировать контейнер map по значению элементов C++
контейнерный класс map C++
C++ Сортировка std::map по значению
Обращение к значению элемента C++
Сортировка map по значению C++
Map iterator обращение к предыдущему или последующему элементу C++
Map с поиском как по ключу, так и по значению C++
C++ Сортировка map по значению int в порядке убывания и частично по ключу char :)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
07.07.2015, 11:52     Map: обращение к значению (класс) через [] #2
operator[] для map создает новый объект, если ключ не найден и ассоциирует этот ключ с новеньким пустым объектом
а для создания объекта нужен конструктор по умолчанию
PS: ваш код можно переписать без insert, основываясь на этом свойстве map:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct A
{
  int val;
  string str;
  A(int i, string msg) : val(i),str(msg) {}
  A() {}
};
 
int main()
{
  map<int,A> tmp;
  tmp[1] = A(1,"aaa");
  tmp[2] = A(2,"bbb");
  cout << tmp[1].str << endl;
  return 0;
}
результат будет тем же
Кран
0 / 0 / 0
Регистрация: 16.02.2015
Сообщений: 9
07.07.2015, 12:05  [ТС]     Map: обращение к значению (класс) через [] #3
Цитата Сообщение от Cra3y Посмотреть сообщение
operator[] для map создает новый объект
воот этого я не учел надо бы внимательнее читать.
Спасибо
Yandex
Объявления
07.07.2015, 12:05     Map: обращение к значению (класс) через []
Ответ Создать тему
Опции темы

Текущее время: 13:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru