Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2010, 00:12   #1
Arnezami
Форумчанин
 
Регистрация: 04.10.2009
Сообщений: 147
Восклицание Простая реализация собственного класса "vector"

Доброго времени суток! Выкладываю свою реализацию класса vector (возможно его нужно отладить в некоторых вещах, но работать должен), писался за 20 минут до начала экзамена, поэтому идиальной работы не гарантирую, но на экзамене прошёл на ура)

файл included.h
Код:
#include <iostream>
#include <Windows.h>
using namespace std;
файл m_vector.cpp
Код:
#include "included.h"

template <typename T> class m_vector
{
private:	
	T *_array;
	int _arraySize;	
public:
	void push_back(T data)
	{
		T *_result = new T[++this->_arraySize];

		for(int index = 0; index < this->_arraySize; index++)
		{
			if(index != this->_arraySize-1)
			{
				_result[index] = this->_array[index];
			}
			else
			{
				_result[index] = data;
				break;
			}
		}
		delete[] this->_array;
		this->_array = _result;		
	}

	T pop()
	{
		return this->popIndex(this->_arraySize-1);
	}

	void clear()
	{
		if(this->_array != NULL)
		{
			::ZeroMemory(this->_array, this->_arraySize);
		}		
		this->_arraySize = 0;
		this->_array = new T[this->_arraySize];
	}	
	
	T operator [](int index)
	{		
		return this->_array[index];		
	}

	int size()
	{
		return this->_arraySize;
	}
	
	void pushIndex(T data, int index)
	{
		int oldSize = this->_arraySize;

		this->_arraySize = (this->_arraySize >= index) ? (++this->_arraySize) : (this->_arraySize + (index - this->_arraySize));
				
		T *_result = new T[this->_arraySize];

		int arrIndex = 0;

		for(int index2 = 0; index2 < this->_arraySize; index2++)
		{
			if(index2 == index)
			{
				_result[index2] = data;
				continue;					
			}
				
			if(arrIndex != oldSize)
			{
				_result[index2] = this->_array[arrIndex++];
			}				
		}
		delete[] this->_array;
		this->_array = _result;		
	}

	T popIndex(int index)
	{
		T *_result = new T[--this->_arraySize];
		
		T resItem;

		int resIndex = 0;

		for(int index2 = 0; index2 < this->_arraySize+1; index2++)
		{
			T item = this->_array[index2];

			if(index == index2)
			{
				resItem = item;
				continue;
			}
			_result[resIndex++] = this->_array[index2];
		}
		delete[] this->_array;
		this->_array = _result;
		return resItem;
	}

	m_vector()
	{
		this->_arraySize = 0;
		this->_array = new T[this->_arraySize];		
	}	
};
ну и собственно использование: файл main.cpp

Код:
#include "m_vector.cpp"

void printVector(m_vector<int> vector)
{
	int size = vector.size();

	if(!size)
	{
		cout<<"В Векторе нет элементов!"<<endl;
		return;
	}

	for(int index = 0; index < vector.size(); index++)
	{
		cout<<index<<" элемент вектора: "<<vector[index]<<endl;
	}
}

void main()
{

	setlocale(LC_CTYPE, "rus");


	m_vector<int> _vector;	
	int size;

	cout<<"Введите кол-во элементов: "<<endl;
	cin>>size;
	
	srand(GetTickCount());

	for(int index = 0; index < size; _vector.push_back(rand() % 100 + index++));

	printVector(_vector);

	_vector.clear();

	printVector(_vector);

	_vector.push_back(5000);

	printVector(_vector);

	_vector.pushIndex(4000, _vector.size());

	printVector(_vector);

	_vector.popIndex(_vector.size() - 1);
	
	printVector(_vector);		
}
Ув. Форумчане! Если мои советы были Вам полезны, не забывайте благодарить в виде повышение рейтинга!!!
http://vkontakte.ru/id6715558
Arnezami вне форума Ответить с цитированием
Старый 27.11.2010, 11:42   #2
Руслантус
Наркоман самоучка
Форумчанин
 
Аватар для Руслантус
 
Регистрация: 22.07.2007
Сообщений: 276
По умолчанию

А причём здесь .NET? Да и вообще, в чём вопрос?
#include <мозг.h>
Руслантус вне форума Ответить с цитированием
Старый 27.11.2010, 11:46   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Молодец, это достижение просто огромно.

p.s. наверное это ждет автор ибо не вопроса и вообще ни черта
BOBAH13 вне форума Ответить с цитированием
Старый 27.11.2010, 12:17   #4
Arnezami
Форумчанин
 
Регистрация: 04.10.2009
Сообщений: 147
Восклицание )

Цитата:
Сообщение от Руслантус Посмотреть сообщение
А причём здесь .NET? Да и вообще, в чём вопрос?
Скажите уважаемый, а Visual C++ не относится к .net платформе? Или .net у вас это только C#? Почитайте сначала её суть, а потом делайте замечания!
Ув. Форумчане! Если мои советы были Вам полезны, не забывайте благодарить в виде повышение рейтинга!!!
http://vkontakte.ru/id6715558
Arnezami вне форума Ответить с цитированием
Старый 27.11.2010, 13:02   #5
Руслантус
Наркоман самоучка
Форумчанин
 
Аватар для Руслантус
 
Регистрация: 22.07.2007
Сообщений: 276
По умолчанию

Уважаемый ололо, я не спроста написал А причём здесь .NET?. Языков, я вообще не касался.

Где вы используете .NET? Я вижу подключение STL библиотеки ввода/вывода и Windows API.

И да, ЯП Visual C++ нет.

Так что, мне ли учить суть?
#include <мозг.h>
Руслантус вне форума Ответить с цитированием
Старый 27.11.2010, 16:20   #6
Arnezami
Форумчанин
 
Регистрация: 04.10.2009
Сообщений: 147
По умолчанию

Visual C++ может работать как и с платформой так и с чистым Win32! И хватит флудить!
Ув. Форумчане! Если мои советы были Вам полезны, не забывайте благодарить в виде повышение рейтинга!!!
http://vkontakte.ru/id6715558
Arnezami вне форума Ответить с цитированием
Старый 27.11.2010, 18:02   #7
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Скажите уважаемый, а Visual C++ не относится к .net платформе?
Ну....Вообще-то нет.
_-Re@l-_ вне форума Ответить с цитированием
Старый 27.11.2010, 21:13   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Скажите уважаемый, а Visual C++ не относится к .net платформе? Или .net у вас это только C#? Почитайте сначала её суть, а потом делайте замечания!
раз и навсегда запомните.
ЯП Visual C++, не относится к dotNET.
а вот ЯП C++ CLR(Visual C++ CLR) уже относится.

вы писали на С++(расширений от Visual C++ здесь нет, поэтому можно так считать)

Руслантус, ЯП такой всетаки есть...

кстати, а в чем вопрос то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 27.11.2010 в 21:16.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.11.2010, 22:51   #9
Руслантус
Наркоман самоучка
Форумчанин
 
Аватар для Руслантус
 
Регистрация: 22.07.2007
Сообщений: 276
По умолчанию

Мини ХолиВар. Да простит меня модератор.

Пепел Феникса
Термин Visual C++ говорит о среде разработки MVS и о библиотеках из неё. C++ CLR же, представляет надстройку над C++.

ЯП в данном случае один - C++.
#include <мозг.h>
Руслантус вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация структуры данных "дерево(указатели на родителей)" в Си Шарп Divus Помощь студентам 0 11.10.2010 04:23
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
"Простая" задача на РНР nickRUS Помощь студентам 1 15.02.2008 01:11