Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Небольшая проблема с шаблонами STL / 3 сообщений из 3, страница 1 из 1
04.05.2013, 16:00
    #38247748
Phantom_Z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Небольшая проблема с шаблонами STL
Здравствуйте! Объясните пожалуйста, в чем моя ошибка (компилятор ругается на объявления векторов в protected)

Формулировка заданияСоздать шаблонную очередь mydeque с использованием STL-контейнера vector
(например, из двух векторов сделать одну очередь, так, что вставка в начало очереди – это
вставка в конец первого вектора, а вставка в конец очереди – вставка в конец второго
вектора). Определить в нем свои функции вставки в начало и в конец. Инстанцировать
очередь для вещественных чисел.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
#ifndef MYDEQUE_H
#define MYDEQUE_H
#include <vector>
#include <iostream>
template <class T, int size = 0> class mydeque
{
protected:
	vector<T> vb;
	vector<T> ve;
public:
	mydeque(int size)
	{
		//если число элементов очереди четно, делим между векторами поровну
		if ((size % 2) == 0) 
		{
			vb(size/2);
			ve(size/2);
		};
		else
		//если нечетно - одному из них достанется больше
		{
			vb((size+1)/2);
			ve((size-1)/2);
		}

	}
	//реализуется вставка в конец очереди
	void push_end(T el)
	{
		vb.push_back(el);
		ve.pop_back();
	}
	//реализуется вставка в начало очереди
	void push_beg(T el)
	{
		ve.push_back(el);
		vb.pop_back();
	}
	void show()
	{
		for (int i = 0; i<vb.size(); i++)
			std::cout<<vb[i];
		for (int i = 0; i<ve.size(); i++)
			std::cout<<ve[i];
	}
};

#endif



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#include "mydeque.h"
int main()
{
	mydeque<double,10> que(10);
	que.show();
	return 0;
}
...
Рейтинг: 0 / 0
04.05.2013, 16:24
    #38247765
Небольшая проблема с шаблонами STL
Да тут полно ошибок. Читайте сообщения компилятора.
Вектор создавайте так std::vector<T> vb;
size в параметре шаблона переименуйте.

А тут в конце точку с запятой уберите и .resize используйте:
if ((size % 2) == 0)
{
vb.resize(size/2);
ve.resize(size/2);
}
...
Рейтинг: 0 / 0
05.05.2013, 17:47
    #38248228
Sash_xp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Небольшая проблема с шаблонами STL
Phantom_Z,

Зачем size в параматрах шаблона template <class T, int size = 0>?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Небольшая проблема с шаблонами STL / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]