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

vector (шаблонный класс) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Организация работы с данными (входные данные должны вводиться из файла, а выходные выводиться в файл) http://www.cyberforum.ru/cpp-beginners/thread896494.html
входные данные должны вводиться из файла, а выходные выводиться в файл. #include <iostream> #include <string> using namespace std; int main() { char t="11010101110100000011101010101110011000110"; char ch;
C++ Организация работы с данными входные данные должны вводиться из файла, а выходные выводиться в файл. #include <iostream> #include <string> using namespace std; int main() { char t="11010101110100000011101010101110011000110"; char ch; http://www.cyberforum.ru/cpp-beginners/thread896473.html
C++ Использование BASS
Точно не знаю на какой конкретно форум писать, пишу сюда. Подскажите, где можно найти нормальный туториал по библиотеке BASS для плюсов/C/делфи? В основном я нахожу либо на автоит, либо какую-то фигню. Встроенная справка... тупая
Функция, убирающая начальные пробелы и конечные C++
Начальные удалил, а как удалить конечные пробелы? #include <stdio.h> #include "conio.h" char *DelSpace(char *s){ char* a=s, *b=s; for(; *b=*a; ++a) if(*b!=' '||b!=s) ++b; return s; }
C++ Не работает функция вывода в main() http://www.cyberforum.ru/cpp-beginners/thread896436.html
вот кусок кода, где не работает первый printf(Rus("Выбери тип календаря")); - точнее не выводится в консоли. void main() { int q=0, choice=0; printf(Rus("Выбери тип календаря")); cin>>choice; do { system("cls"); printf(Rus("=====Курсовая работа====="));
C++ Определить, есть ли у биквадратных уравнений совпадающие корни Определить, есть ли у биквадратных уравнений совпадающие корни. уравнения такие ax^4+bx^2+c=0 и y^4+dy^2+g=0. подробнее

Показать сообщение отдельно
igorrr37
 Аватар для igorrr37
1594 / 1222 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
10.06.2013, 09:09     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
#include <iostream>
#include <stdexcept>
#include <string>
 
template<class T>
class Vector
{
public:
    Vector() : ptr(0), _size(0), _capacity(0){}
    void push_back(T const& rhs)
    {
        insert(rhs, _size);
    }
    void push_front(T const& rhs)
    {
        insert(rhs, 0);
    }
 
    T& operator[](size_t const index)
    {
        if(index >= _size)
            throw std::runtime_error("Vector::operator[] exception: index >= _size");
        return ptr[index];
    }
 
    size_t size()const
    {
        return _size;
    }
 
    size_t capacity()const
    {
        return _capacity;
    }
 
    ~Vector()
    {
        delete[] ptr;
        ptr = 0;
        _size = 0;
        _capacity = 0;
    }
 
    struct Iterator
    {
    public:
        explicit Iterator(T* prhs = 0) : ptr(prhs){}
        Iterator operator++()
        {
            if(ptr)
                ++ptr;
            return *this;
        }
 
        Iterator operator++(int)
        {
            T* pret = ptr;
            if(ptr)
                ++ptr;
            return Iterator(pret);
        }
 
        T& operator*() const
        {
            return *ptr;
        }
 
        T* operator->() const
        {
            return ptr;
        }
 
        bool operator!=(Iterator irhs)
        {
            return ptr != irhs.ptr;
        }
 
    private:
        T* ptr;
    };
 
    Iterator begin()
    {
        return Iterator(ptr);
    }
 
    Iterator end()
    {
        return Iterator(ptr + _size);
    }
 
private:
    T* ptr;
    size_t _size, _capacity;
    Vector(Vector const&);
    Vector& operator=(Vector const&);
    void insert(T const& rhs, size_t const index)
    {
        if(index > _size)
            throw std::runtime_error("Vector::insert exception: index > _size");
        if(!ptr)
        {
            ptr = new T[2];
            _capacity = 2;
            ptr[0] = rhs;
            _size = 1;
        }
        else if(_size == _capacity)
        {
            T* ptmp = new T[_capacity * 2];
            size_t i = 0;
            for(i = 0; i < index; ++i)
                ptmp[i] = ptr[i];
            ptmp[index] = rhs;
            for(i = index; i < _size; ++i)
                ptmp[i + 1] = ptr[i];
            delete[] ptr;
            ptr = ptmp;
            ptmp = 0;
            _capacity *= 2;
            ++_size;
        }
        else
        {
            int i = 0;
            for(i = int(_size - 1); i >= 0; --i)
                ptr[i + 1] = ptr[i];
            ptr[index] = rhs;
            ++_size;
        }
    }
};
 
int main()
{
    Vector<std::string> vec;
    vec.push_back("111");
    vec.push_front("222");
    vec.push_back("333");
    vec.push_front("444");
    vec.push_front("555");
    std::cout << "size: " << vec.size() << "\ncapacity: " << vec.capacity() << "\n\n";
    for(auto const& val : vec)
        std::cout << val << '\n';
    return 0;
}
 
Текущее время: 01:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru