Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.67
Гаечка
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 5
#1

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

16.03.2011, 19:46. Просмотров 2703. Ответов 11
Метки нет (Все метки)

ЗдраствуйтеПоскажите пожалуйста по нижеприведенному коду, сама не могу разобраться, хотя смотрела в учебниках и по инету не могу найти информацию

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

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)
{
}

};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2011, 19:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Контейнерные классы C++. (C++):

Контейнерные классы - C++
Добрый вечер! Получил задание на редактирование параграфов из файла. Решил делать через контейнер вида map. Все считывается и выводится,...

Контейнерные классы - C++
Есть некоторое сомнения, помоготи пожалуйста: Если у меня есть например такой код: vector&lt;int&gt; * pmyvec; pmyvec-&gt;push_back(3); ...

Контейнерные классы - C++
Собственно что это?:) Если можно, скиньте ссылку, где есть примеры на visual C++ на русском. Спасибо

контейнерные классы - C++
выводит ошибку, как исправить 1&gt;22.cpp(41): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не...

Контейнерные классы - C++
Помогите пожалуйста, очень срочно!!!!Необходимо исправить программу! Работает не коректно.. Условия: Написать программу...

Последовательные контейнерные классы - C++
Составить программу, используя последовательные классы стандартной библиотеки шаблонов С++, которая содержит текущую информацию о заявках...

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

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

Stack(const Container& container = Container()): container_(container)
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
16.03.2011, 20:22 #9
это инициализация выбранным контейнером
пользователь задает тип контейнера и стек использует его для хранения своих данных
1
Гаечка
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 5
16.03.2011, 20:29  [ТС] #10
А после двоеточия?Конструктор?
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
16.03.2011, 20:48 #11
Цитата Сообщение от Гаечка Посмотреть сообщение
А после двоеточия?Конструктор?
Да, всё верно.
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
16.03.2011, 20:56 #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 минуты
Цитата Сообщение от Гаечка Посмотреть сообщение
А после двоеточия?Конструктор?
Список инициализации конструктора.
0
16.03.2011, 20:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2011, 20:56
Привет! Вот еще темы с ответами:

Контейнерные классы: стек и очередь - C++
Создать класс“Сотрудник”, состоящей из класса ”Зарплата”. Класс “Сотрудник ”: фамилия сотрудника, должность. Класс “Зарплата ”: зарплата за...

Библиотека потокового ввода-вывода и контейнерные классы.Дешифровка - C++
Задание:Создать функцию, которая расшифровывает зашифрованный файл на основании файла- ключа. Функция принимает в качестве параметров...

Абстрактные контейнерные типы ? - C++
Есть три типа контейнеров – вектор (vector) и список (list). (Третий последовательный контейнер – двусторонняя очередь (deque а третий он...

Непонятна тема (Классы содержащие другие классы, как данные члены ) - C++
Изучаю книгу Джесс Либерти(в частности эту главу в данный момент) #include &lt;iostream&gt; class Point { public: void SetX(int...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru