быдлокодер
1723 / 910 / 106
Регистрация: 04.06.2008
Сообщений: 5,666
|
|||||||||||
1 | |||||||||||
Создание объекта std::set21.11.2010, 17:37. Показов 11140. Ответов 11
Метки нет Все метки)
(
http://www.cplusplus.com/reference/stl/set/set/
Вот официальный сайт, по-моему. И вот там такие конструкторы:
И ниже пример создания множества.
Как это понять? СПасибо
0
|
|
21.11.2010, 17:37 | |
Ответы с готовыми решениями:
11
STL std::set, std::pair, std::make_pair
Операция std::cout для Объекта типа std::string |
В астрале
![]() 8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
21.11.2010, 17:53 | 2 | |||||
kravam,
0
|
![]() 2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||||||
21.11.2010, 17:53 | 3 | |||||
Ну-с, во-первых, говорить об "официальном сайте STL", по-моему, несколько.... эээ..... опрометчиво, скажем так. К тому же, если бы такой официальный сайт существовал бы, он явно был бы не русскоязычным.
Учти еще, что даже реализаций STL существует несколько! Стандарт языка устанавливает требования только к интерфейсу библиотеки. И если б такой сайт существовал - какую именно из реализаций он бы описывал?? Вот этот конструктор
1
|
Nameless One
|
21.11.2010, 18:26
#4
|
0
|
быдлокодер
1723 / 910 / 106
Регистрация: 04.06.2008
Сообщений: 5,666
|
||||||
21.11.2010, 19:09 [ТС] | 5 | |||||
ForEveR,
CheshireCat, а теперь вопрос: а почему вы решили что этот конструктор и есть конструктор по умолчанию? Вот я попытался найти ответ сам. У Павловской ("C/C++ ПРограммирование на языке высокго уровня") есть такой пример: класс monstr и три таких конструктора: monstr (int he= 100, int am= 10); monstr (color= sk) monstr (char*= name) И написано, что первый является конструктором по умолчанию, поскольку его можно вызвать без параметров. И из чего это следует? Из того, что там два параметра типа int? ТАк я могу такой вот конструкто приписать ещё. четвёртый (здесь он по счёту второй):
У Стивена Прата просто опущен этот вопрос. Кстати, многие авторы отводят конструкторам по умолчанию целую главу, в которой пишут как создать конструктор по умолчанию- конструктор без аргументов. И всё на этом.
0
|
В астрале
![]() 8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
21.11.2010, 20:12 | 6 | ||||||||||
kravam, Тут очевидно что у set именно этот конструктор используется при создании объекта.
Ну и так. Между прочим. MSVS.
0
|
быдлокодер
1723 / 910 / 106
Регистрация: 04.06.2008
Сообщений: 5,666
|
|||||||||||
21.11.2010, 20:28 [ТС] | 7 | ||||||||||
Да, так. Вот здесь я нашёл:
В общем по количеству аргументов более всего подходит опять же, первый конструктор. НО опять чушь. У меня первый аргумент типа int, а в конструкторе CompareВ общем, чтобы не гадать на кофейной гуще опять хочу спросить, а щас какой конструктор вызывается? Или в моём компе другая реализация STL, отличная от представленной?
0
|
В астрале
![]() 8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||||||||||||||||||||||
21.11.2010, 20:44 | 8 | ||||||||||||||||||||||||||||||
kravam, Не так все просто.
Как ни странно вызывается конструктор по умолчанию (в MSVS). Но он не совсем конструктор по умолчанию ибо класс все же шаблонный. Шаблон класса set выглядит так:
Далее. При написании
Добавлено через 5 минут Из этого конструктора вызывается такой конструктор. Где: _Parg - значение вернувшееся key_compare() (в нашем случае less<int>), Al - аллокатор (в данном случае по умолчанию).
При создании объекта допустим таким образом.
1
|
быдлокодер
1723 / 910 / 106
Регистрация: 04.06.2008
Сообщений: 5,666
|
|
21.11.2010, 23:26 [ТС] | 9 |
я мало чё понял. потом вернусь сюда ещё, спасибо всё равно
0
|
В астрале
![]() 8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
22.11.2010, 00:28 | 10 | |||||
kravam, При перемене template-ных параметров - не будет вызываться другой конструктор. Другой конструктор будет вызываться только в том случае, если это указано явно в параметрах конструктора. Пример.
1
|
быдлокодер
1723 / 910 / 106
Регистрация: 04.06.2008
Сообщений: 5,666
|
||||||||||||||||
22.11.2010, 20:28 [ТС] | 11 | |||||||||||||||
![]() Писал:
S()
какому из конструкторов соответсвует ЭТО выражение
Вот я подумал на досуге и понял чё ИМЕННО я не понял. Опыта вообще не хватает.
0
|
В астрале
![]() 8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
22.11.2010, 20:59 | 12 | ||||||||||
kravam, Ну да. Параметры шаблона не меняют вызов конструктора. А вот если мы сделаем так.
0
|
22.11.2010, 20:59 | |
Помогаю со студенческими работами здесь
12
Инициализация std::set итераторами для std::set Конструктор для std::set Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |