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

Контейнерные классы C++. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.67
Гаечка
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 5
16.03.2011, 19:46     Контейнерные классы C++. #1
ЗдраствуйтеПоскажите пожалуйста по нижеприведенному коду, сама не могу разобраться, хотя смотрела в учебниках и по инету не могу найти информацию

Я выделила красным и синим нужные строки.

1)Зачем нужен class T,выделенный синим?

2)Что означают строки выделенные красным, конструктор что ли, непонятно.

Подскажите pls...

template < class T, class Container = std::list<T>>

class Stack
{
private:
Container container_;

public:
explicit Stack(const Container& container = Container())
: container_(container)
{
}

};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2011, 19:46     Контейнерные классы C++.
Посмотрите здесь:

C++ Контейнерные классы
Контейнерные классы C++
C++ Последовательные контейнерные классы
C++ Абстрактные контейнерные типы ?
Контейнерные классы: стек и очередь C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
16.03.2011, 19:47     Контейнерные классы C++. #2
Цитата Сообщение от Гаечка Посмотреть сообщение
1)Зачем нужен class T,выделенный синим?
Для того, чтобы класс был шаболнным, очевидно же.
Гаечка
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 5
16.03.2011, 19:50  [ТС]     Контейнерные классы C++. #3
Цитата Сообщение от asics Посмотреть сообщение
Для того, чтобы класс был шаболнным, очевидно же.
Спасибо, а красненьким не знаете?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
16.03.2011, 19:53     Контейнерные классы C++. #4
Гаечка, Если чесно, то сам до конца не доганяю, но раз есть ключевое слово explicit, то значит что-то связаное з исключениями.

Добавлено через 52 секунды
Думаю другие форумчани меня дополнять, в вышесказаном.
Гаечка
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 5
16.03.2011, 19:55  [ТС]     Контейнерные классы C++. #5
Подождем
HighPredator
 Аватар для HighPredator
5342 / 1725 / 320
Регистрация: 10.12.2010
Сообщений: 5,108
Записей в блоге: 3
16.03.2011, 20:11     Контейнерные классы C++. #6
Вообще на практике explicit используется когда нужно запретить использование конвертирующего конструктора с выполнением копирующего. Уточню: чтобы не выполнялся конструктор вида MyClass a=12; (если конструктор принимает int параметр), а выполнялся MyClass a=MyClass(12); Но естественно что хотели сделать создатели кода нужно устанавливать из контекста.
dxdy
 Аватар для dxdy
97 / 97 / 5
Регистрация: 14.06.2010
Сообщений: 283
16.03.2011, 20:15     Контейнерные классы C++. #7
очень много статей на эту тему explicit
Гаечка
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 5
16.03.2011, 20:20  [ТС]     Контейнерные классы C++. #8
А вот этот кусочек

Stack(const Container& container = Container()): container_(container)
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
16.03.2011, 20:22     Контейнерные классы C++. #9
это инициализация выбранным контейнером
пользователь задает тип контейнера и стек использует его для хранения своих данных
Гаечка
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 5
16.03.2011, 20:29  [ТС]     Контейнерные классы C++. #10
А после двоеточия?Конструктор?
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,508
16.03.2011, 20:48     Контейнерные классы C++. #11
Цитата Сообщение от Гаечка Посмотреть сообщение
А после двоеточия?Конструктор?
Да, всё верно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2011, 20:56     Контейнерные классы C++.
Еще ссылки по теме:

C++ Контейнерные классы
C++ контейнерные классы
Контейнерные классы C++

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

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
16.03.2011, 20:56     Контейнерные классы C++. #12
Цитата Сообщение от Гаечка Посмотреть сообщение
1)Зачем нужен class T,выделенный синим?
T – это тип данных, хранимых в стеке.
При объявлении, например,
C++
1
std::stack<int>  st;
шаблон инстанцируется со значением T == int.

Цитата Сообщение от Гаечка Посмотреть сообщение
2)Что означают строки выделенные красным, конструктор что ли, непонятно.
Подскажите pls...
template < class T, class Container = std::list<T>>
class Stack
{
private:
Container container_;
public:
explicit Stack(const Container& container = Container())
: container_(container)
{
}
};
Стек – это не контейнер, а адаптер контейнера, т.е. он только предоставляет интерфейс стека для контейнера, который он хранит внутри себя как член-данное.
Указанный конструктор по умолчанию создает стек с пустым контейнером, но если в качестве параметра указать какой-либо объект контейнера (того же типа, что хранит стек), то он скопирует его в свой контейнер.
Спецификатор explicit здесь стоит для того, чтобы избежать неявного приведения типа контейнера к типу стека.
А вы можете открыть тайну, с какой целью вы изучаете код шаблона std::stack?

Добавлено через 2 минуты
Цитата Сообщение от Гаечка Посмотреть сообщение
А после двоеточия?Конструктор?
Список инициализации конструктора.
Yandex
Объявления
16.03.2011, 20:56     Контейнерные классы C++.
Ответ Создать тему
Опции темы

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