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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.91
губошлёп
0 / 0 / 0
Регистрация: 28.02.2009
Сообщений: 26
#1

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

27.05.2009, 20:39. Просмотров 6765. Ответов 10
Метки нет (Все метки)

привет!!!!!!! поделитесь пожалусто кодом реализации класса вектор!!!!!! пожалусто........ нужно к завтрашнему(((99:'(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2009, 20:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос код реализации класса вектор (C++):

Написать код программы для реализации класса human - C++
Написать код программы для реализации класса human с атрибутами класса имя и возраст и методами задания имени и возраста и вывода...

Отделение интерфейса от реализации класса: компиляция кода реализации - C++
Доброго времени суток, У меня возникла проблема с отделением интерфейса от реализации класса. Допустим, у меня есть три файла: 1....

Трудности в реализации класса - C++
Не могу понять, почему не работают конструкторы класса... Прошу понятного объяснения=) вот код 1 файл #ifndef ___MAS #define ___MAS...

Идеи реализации класса Menu - C++
Добрый день. В общем хочу разработать шаблонный класс Menu, чтобы постоянно не писать switch{}, но не знаю, как лучше сделать, суть в том,...

Детали реализации конструктора класса - C++
Есть конструктор условного класса картинки и я не совсем понимаю нескольких вещей: #include <iostream> #include <fstream> ...

Ошибки в реализации класса Vector3D - C++
Здравствуйте. Помогите дурачку. Создать класс Vector3D. Реализовать: сложение векторов, скалярное умножение векторов, умножение вектора...

10
Rififi
2359 / 1052 / 44
Регистрация: 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 / 0
Регистрация: 28.02.2009
Сообщений: 26
27.05.2009, 21:59  [ТС] #3
спасибо большое тебе токо я забыл мне не надо шаблона использовать(((( препод сказал что написать класс не изпользуя template!!!!!!!! это как-нибудь можно?? за ранее спасибо........
0
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
27.05.2009, 22:04 #4
ты только что понял на собственном опыте одно очень важное правило: ЗАДАЧУ НАДО ОПИСЫВАТЬ МАКСИМАЛЬНО ПОЛНО.
(и это гуд, ибо собственный опыт бесценен).
0
губошлёп
0 / 0 / 0
Регистрация: 28.02.2009
Сообщений: 26
27.05.2009, 22:08  [ТС] #5
ну извини я спешу у мя н6е чё не получаеться((( и вот ошибаюсь постояно.............

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

Добавлено через 39 секунд
за ранее спасибо
0
ISergey
Maniac
Эксперт С++
1381 / 892 / 54
Регистрация: 02.01.2009
Сообщений: 2,685
Записей в блоге: 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 / 0
Регистрация: 28.02.2009
Сообщений: 26
27.05.2009, 22:53  [ТС] #9
спасибо.........
0
губошлёп
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
0
губошлёп
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
0
15.06.2009, 13:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2009, 13:36
Привет! Вот еще темы с ответами:

Отделение интерфейса класса от реализации - C++
Осваиваю раздел одной книги &quot;Отделение интерфейса класса от реализации&quot;. То что получилось можно и нужно скачать по адресу...

Составить описание класса "3D вектор". Объявить объекты класса и продемонстрировать работу методов - C++
Возникли сложности при решении задачи. Буду признателен тем, кто поможет. Задание: Составить описание класса. Объявить объекты класса...

Объявление класса без его реализации - C++
Добрый день! Я (вроде бы) знаю как объявлять класс, не подключая его в хедере class MyClass; ... public: myFunc(MyClass);

Отделение интерфейса класса от его реализации - C++
Всем привет! Прочитал все найденные похоже темы, но ответа на свой вопрос я не нашел. Поэтому создаю тему... Хочу отделить интерфейс...


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

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

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