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

класс vector ошибка в push_back() - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Динамические массивы http://www.cyberforum.ru/cpp-beginners/thread666175.html
Попытался поработать с дин. массивами, почему то ошибка появляется,может подскажете в чем проблема #include "iostream" using namespace std; int main() { int size=2; int i; int *a=new int; cout<<"enter size of array ";
C++ Функции. Синтаксис объявления и вызова 1. Написать функцию, которая вычисляет Вариант Задание 1 площадь круга S по его радиусу R (S=R2) 2 площадь треугольника S по его основанию a и высоте h (S=ah/2) 3 площадь кольца S по его внешнему R и внутреннему r радиусам (S=(R2 - r2)) 4 http://www.cyberforum.ru/cpp-beginners/thread666167.html
C++ Синонимы операций взятия адреса массива (arr и &arr)
возможно коряво написал заголовок, да и сам вопрос банальный. после создании лок. массива его адрес можно получить при помощи его имени или &имя. После вызова др. ф-ции и передачи ему копии мас, повторяю те же операции. &ar - показывает другой адрес, а ar - адрес прежнего массива int main() { int ar; cout << &ar << endl; // 1000 cout << ar << endl; // 1000
Динамический массив заполнить псевдослучайными числами C++
Динамический массив заполняеться псевдо случайными числами но когда я их вывожу там числа типа -48484848 #include <time.h> using namespace std; int Quick_sort(int n); int main() { setlocale(LC_CTYPE,"Russian"); int num,rand_digit; cout << "Колво элементов: ";
C++ ошибка компиляции http://www.cyberforum.ru/cpp-beginners/thread666137.html
error: lvalue required as left operand of assignment for (int i=0; i<STRANDS_AMOUNT;i++) { int sum = 0; int k = 0; while(strands !='0') { if(strands='C'||strands='G') sum++; } if(maxValue<sum/strands.length())
C++ Дано вещественное x. Вычислить z = f( x ), не получается составить код Дано вещественное x. Вычислить z = f( x ) http://ms.sfu-kras.ru/file.php/59/Lab_5/image014.gif (только в выражении вторая часть не под корнем 3-й степени,а просто под корнем) я вот составлял программу, но что-то не получается, наставьте на путь истинный, чтобы все заработало как надо, заранее очень благодарен. #include "stdafx.h" #include <stdio.h> #include <math.h> подробнее

Показать сообщение отдельно
AnreyKazakov
Заблокирован
08.10.2012, 22:48  [ТС]     класс vector ошибка в push_back()
Цитата Сообщение от ForEveR Посмотреть сообщение
Так несколько логичнее, не находите?
Да, так кстате намного лучше, чет я перемудрил было

Добавлено через 1 час 0 минут
vector

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include <iostream>
#include <cstddef>
using namespace std;
 
 
class vector
    {
    public: 
    //Конструкторы инициализирующие
    vector():siz(1),sizemem(2),array(new int[sizemem])
        {
        for(size_t i=0;i!=siz;++i)array[i]=0;
        }
    vector(int s):siz(s),sizemem(s*2),array(new int[sizemem])
        {
        for(size_t i=0;i!=siz;++i)array[i]=0;
        }
    vector(int s,int val):siz(s),sizemem(s*2),array(new int[sizemem])
        {
        for(size_t i=0;i!=siz;++i)array[i]=val;
        }
    //   .FRONT()
    int front()
        {
        return array[0];
        }
    //   .BACK()    
    int back()
        {
        return array[siz];  
        }
    //   .SIZE()    
    size_t size()
        {
        return siz; 
        }
    //   .RESIZE()  
    bool resize(unsigned int res)
        {
        if(res>siz)
            {
            while(res>siz)
                {
                push_back(0);
                }   
            }
        else
            {
            while(res<siz)
                {
                pop_back(); 
                }   
            }
        return 1;           
        }   
    //   .CAPACITY()
    size_t capacity()
        {
        return sizemem; 
        }
    //   .RESERVE() 
    bool reserve(size_t rsrv)
        {
        sizemem=rsrv;   
        int* arr2=new int[sizemem];
        for(size_t i=0;i!=siz;++i)arr2[i]=array[i];
        delete [] array;
        array=arr2;
        return 1;
        }
    //   .PUSH_BACK()   
    bool push_back(int val)
        {   
        if(siz!=sizemem)
            {
            array[siz]=val;
            ++siz;  
            }
        else
            {
            reserve(sizemem*2);
            array[siz]=val;
            ++siz;
            }   
        return 1;
        }
    //   .POP_BACK()
    bool pop_back()
        {
        if(siz)
            {
            --siz;
            return 1;
            }
        else
            {
            return 0;
            }   
        }   
    //   .INSERT()
    /*bool insert()
        {           
        }*/
    //INDEX
    int &operator[](const size_t index);
    const int &operator[](const size_t index)const;
    
    private:
    size_t siz;
    size_t sizemem;
    int* array; 
    };  
    
int &vector::operator[](const size_t index)
    {
    if((index>=0)&&(index<=siz))
        {
        return array[index];
        }
        else
        {
        cout<<"индекс не соответствует"<<endl;  
        return array[0];    
        }
    }
 
const int &vector::operator[](const size_t index)const
    {
    if((index>=0)&&(index<=siz))
        {
        return array[index];
        }
        else
        {
        cout<<"индекс не соответствует"<<endl;  
        return array[0];    
        }
    }    
    
int main()
    {
    class vector v1(3,4);
    cout<<v1.size()<<" "<<v1.capacity()<<endl;
    cout<<v1[2]<<endl;
    for(size_t i=0;i!=4;++i) v1.push_back(i);
    cout<<v1.size()<<" "<<v1.capacity()<<endl;
    v1.resize(25);
    cout<<v1.size()<<" "<<v1.capacity()<<endl;
    return 0;
    }

В общем криво конечно, пока написал
(front())
back()
push_back()
pop_back()
size()
resize()
capacity()
[]
уперлось все в insert(),assign(),erase() тк нужны итераторы, что делать? писать горе-<iterator> или есть способ подключить как-нибудь итератор к созданному классу?
:: - его нельзя перегружать, как быть ?
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru