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

код реализации класса вектор - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.91
губошлёп
0 / 0 / 0
Регистрация: 28.02.2009
Сообщений: 26
27.05.2009, 20:39     код реализации класса вектор #1
привет!!!!!!! поделитесь пожалусто кодом реализации класса вектор!!!!!! пожалусто........ нужно к завтрашнему(((99:'(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2009, 20:39     код реализации класса вектор
Посмотрите здесь:

Отделение интерфейса класса от реализации C++
Отделение интерфейса от реализации класса: компиляция кода реализации C++
C++ Знакомство с классами, попытка реализации класса матриц
C++ IDE с автосозданием и измененим реализации класса
C++ Ошибки в реализации класса Vector3D
C++ Отделение интерфейса класса от его реализации
C++ Объявление класса без его реализации
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
27.05.2009, 21:40     код реализации класса вектор #2
C++
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
49
50
#include <stdexcept>
 
template <typename T>
class Vec
{
public:
    typedef T* iterator;
    typedef const T& const_reference;
 
    Vec() : begin_(NULL), end_(NULL), last_(NULL)
    {
    }
 
    iterator push_back(const_reference _R)
    {
        if (!begin_)
        {
            begin_ = new T[1];
            end_ = last_ = begin_ + 1;
            *begin_ = _R;
            return begin_;
        }
        
        if (end_ == last_)
        {
            throw std::exception("Увеличение размера вектора недоступно в демонстрационной версии");
        }
        *end_ = _R;
        end_++;
        return end_-1;
    }
 
    void clear() { throw std::exception("Очистка вектора недоступна в демонстрационной версии"); }
 
    iterator begin() { return begin_; }
    iterator end() { return end_; }
 
private:
    iterator        begin_;
    iterator        end_;
    iterator        last_;
};
 
 
int main()
{
    Vec<int> v;
    v.push_back(1);
    return 0;
}
губошлёп
0 / 0 / 0
Регистрация: 28.02.2009
Сообщений: 26
27.05.2009, 21:59  [ТС]     код реализации класса вектор #3
спасибо большое тебе токо я забыл мне не надо шаблона использовать(((( препод сказал что написать класс не изпользуя template!!!!!!!! это как-нибудь можно?? за ранее спасибо........
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
27.05.2009, 22:04     код реализации класса вектор #4
ты только что понял на собственном опыте одно очень важное правило: ЗАДАЧУ НАДО ОПИСЫВАТЬ МАКСИМАЛЬНО ПОЛНО.
(и это гуд, ибо собственный опыт бесценен).
губошлёп
0 / 0 / 0
Регистрация: 28.02.2009
Сообщений: 26
27.05.2009, 22:08  [ТС]     код реализации класса вектор #5
ну извини я спешу у мя н6е чё не получаеться((( и вот ошибаюсь постояно.............

Добавлено через 2 минуты 8 секунд
извини!!!!!!!!! просто я спешу и у мя ничего не получаеться(((((((
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 1
27.05.2009, 22:10     код реализации класса вектор #6
Цитата Сообщение от Rififi Посмотреть сообщение
C++
1
2
3
throw std::exception("Увеличение размера вектора недоступно в демонстрационной версии");
.....
throw std::exception("Очистка вектора недоступна в демонстрационной версии");
губошлёп
0 / 0 / 0
Регистрация: 28.02.2009
Сообщений: 26
27.05.2009, 22:14  [ТС]     код реализации класса вектор #7
понятно.............. что ничего не понятно!!!!!!!! кто-нибудь имеет код класса вектор без использования template поделитесь пожалусто,,,,,,,,,,,,,,,, а то я завтро буду в пролете(((((:'(

Добавлено через 39 секунд
за ранее спасибо
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 1
27.05.2009, 22:18     код реализации класса вектор #8
это закоментируй
C++
1
template <typename T>
потом все Т замени на int

Ну и потом это
C++
1
Vec<int> v;
будет так
C++
1
Vec v;
губошлёп
0 / 0 / 0
Регистрация: 28.02.2009
Сообщений: 26
27.05.2009, 22:53  [ТС]     код реализации класса вектор #9
спасибо.........
губошлёп
0 / 0 / 0
Регистрация: 28.02.2009
Сообщений: 26
01.06.2009, 18:13  [ТС]     код реализации класса вектор #10
курсовая горит(((( а учебу лень кидать((((:'( кто может помочь??? функцию для удаление последнего элемента с описанием????
void vector:op_back(double y) //удаление последнего элемента
{...}

Добавлено через 1 минуту 18 секунд
Цитата Сообщение от губошлёп Посмотреть сообщение
void vector:: pop_back(double y) //удаление последнего элемента
sorri
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2009, 13:36     код реализации класса вектор
Еще ссылки по теме:

Написать код программы для реализации класса human C++
Детали реализации конструктора класса C++
Трудности в реализации класса C++
Идеи реализации класса Menu C++
Ошибка компиляции при реализации класса-шаблона C++

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

Или воспользуйтесь поиском по форуму:
губошлёп
0 / 0 / 0
Регистрация: 28.02.2009
Сообщений: 26
15.06.2009, 13:36  [ТС]     код реализации класса вектор #11
вообщем разобраться не могу(((( есть код нашел
#include<fstream>
using namespace std;
class vector
{
private:
double *mas; //объявлен массив с именем mas по указателю
int N; //N количество элементов массива

public:
vector(); //создан пустой конструктор
vector(double *,int );
~vector(); //деструктор
void push_back(double); //функция для добавления элемента в конец
void pop_back(ofstream&); //функция для удаления последнего элемента
void insert(double,int); //функция для вставки в любое место
void erase(double,int); //произвольное удаление
void show_vector(ofstream&);
};
vector::vector(double *M,int k)
{
N=k;
mas=new double[N];
for(int i=0;i<N;i++)
mas[i]=M[i];

}
vector::vector()
{
N=0;
mas=0;
}
vector::~vector() //деструктор
{
delete[]mas; //удаление массива
}
void vector::show_vector(ofstream& ooo)
{
for(int i=0;i<N;i++)
ooo<<mas[i]<<' ';
ooo<<endl;
}
int vector::size()
{
return N;
}
void vector:ush_back(double x) //добавление нового элемента в конец массива
{

if(N==0)
{
N=N+1;
mas=new double[1];
mas[0]=x;
}
else
{
double *mas2=new double[N];
for(int i=0;i<N;i++)
mas2[i]=mas[i];
delete[]mas;
N=N+1;
mas=new double[N];
for(int i=0;i<N;i++)
mas[i]=mas2[i];
mas[N-1]=x;
delete[]mas2;

}

}
void vector:op_back(ofstream& ooo)
{
if(N!=0)
{
double *mas2=new double[N-1];
for(int i=0;i<N-1;i++)
{
mas2[i]=mas[i];
}
delete[]mas;
N=N-1;
mas=new double[N];
for(int i=0;i<N;i++)
mas[i]=mas2[i];
delete[]mas2; //удаление промежуточного массива
}
else
ooo<<"вектор пуст";

}
void vector::insert(double x,int k)
{
if(N==0)
{
mas=new double[1];
k=0;
mas[k]=x;
N=N+1;
}
else
{
double *mas2=new double[N+1];
for(int i=0;i<k;i++)
mas2[i]=mas[i];
mas2[k]=x;
for(int i=k+1;i<N+1;i++)
mas2[i]=mas[i-1];
delete[]mas;
N=N+1;
mas=new double[N];
for(int i=0;i<N;i++)
mas[i]=mas2[i];
delete[]mas2;
}


}
void vector::erase(double x,int k)
{
if((N!=0)&&(k<=N))
{
double *mas2=new double[N-1];
for(int i=0;i<k;i++)
mas2[i]=mas[i];
for(int i=k;i<N-1;i++)
mas2[i]=mas[i+1];
delete[]mas;
N=N-1;
mas=new double[N];
for(int i=0;i<N;i++)
mas[i]=mas2[i];
delete[]mas2;
}
}
void main()
{
ifstream in("input.txt");
ofstream out("output.txt");
vector A;
A.push_back(10);
A.push_back(5);
A.push_back(4);
A.show_vector(out);
A.pop_back(out);
A.pop_back(out);
A.show_vector(out);
A.insert(2,1);
A.insert(25,0);
A.show_vector(out);
double B[20];
int n;
in>>n;
for(int i=0;i<n;i++)
in>>B[i];
vector C(B,n);
C.show_vector(out);
}
ну вот токо проблема возникает во первых
1)нужна функция которая в случии если вектор заполнен не полнасть, то что-то с ним делала
2)я выше писал void vector:: pop_back(double y) //удаление последнего элемента
мне нужно знать что мы посылаемЮ, здесь double y моя догадка, и сам метод нужен, и если есть, то описание

Добавлено через 36 секунд
-вот этот смайл меняем на : p
Yandex
Объявления
15.06.2009, 13:36     код реализации класса вектор
Ответ Создать тему
Опции темы

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