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

Реализация контейнера идентичного std::vector по Страуструпу - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ std::cout в CodeBlocks неправильно работает? http://www.cyberforum.ru/cpp-beginners/thread940032.html
Ассоциативность у std::cout должна быть слева направо а этот пример в CodeBlocks доказывает противоположное. Добавляю в конец вектора два элемента 1 2. Потом их вывожу. При выводе должно бы получится 2 1 -1, а в результате все наоборот (-1 1 2) Ведь такого не может быть. Может быть я что не понимаю class Vector { private: int ar; int pos;
C++ Проблемы при компоновке error LNK2019 Добрый день. Проблема заключается в следующем, когда использую сторонние библиотеки, в данном случае использовал исходники SQLite 3 (http://www.sqlite.org/2013/sqlite-amalgamation-3071700.zip), то при компиляции проекта получаю следующее (в работе использую Microsoft Visual Studio C++ 2008): 1>Компоновка... 1>SQLiteTest.obj : error LNK2019: ссылка на неразрешенный внешний символ... http://www.cyberforum.ru/cpp-beginners/thread940018.html
Наследование от shared_ptr C++
Добрый день. Подскажите вот какую вещь. Сделал удобный для себя класс для ведения логов. В нем переопределил operator<< след. образом: template <class T> YacLog& operator<<(T inp) { TempStream.clear(); TempStream << inp; toLog(defaultLevel,TempStream.str());
C++ пример из книги
#include <iostream.h> long summa (int k,...){ int *pik=&k; char *pc=(char *)pik; cout <<" *pc="<<*pc<<" pc="<<pc; long total =0; for (int x=k;x>0;x--) { pc=pc+4; total=total+*pc; //pik=(int *)pc;
C++ Разработка графического редактора http://www.cyberforum.ru/cpp-beginners/thread939936.html
Помогите пожалста.. Разработка графического редактора.Программный модуль должен обеспечивать построение многоугольников,выбор цвета фона и контура, сохранения в цифровом формате(х,у),открытие ранее сохранённых объектов.Реализоватьфункции сдвига и симметричного отображения.Рекомендуется применение структурных массивов.Реализовать обработку исключительных ситуаций.
C++ Функция "возвращает" значение Почему у этой функции не указан тип возвращаемого значения? template <class T> operator T () { return *((T *)m_p); } class any { void * m_p; public: template <class T> any( T value ) : m_p( (void *)(new T ( value )) ) {} template <class T> operator T () { return *((T *)m_p); } подробнее

Показать сообщение отдельно
nofx
7 / 7 / 1
Регистрация: 28.10.2012
Сообщений: 86
Завершенные тесты: 1
04.10.2016, 00:12     Реализация контейнера идентичного std::vector по Страуструпу
Тоже читаю Бьярне
Сам свой вектор не смог осилить, за основу взял Ваш. Немного переделал его по своему (вариант c auto_ptr проще):
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
template<class T, class A = allocator<T> >
class vvector {
 
private:
    int sz;
    int space;
    T* elem;
    void copy(const vvector& arg);
 
protected:
    A alloc;
 
public:
    
    vvector() :sz(0), space(0), elem(0) {}
    vvector(int _sz, int _space) : sz(_sz), space(_space)
    {
        elem = alloc.allocate(space);
        std::uninitialized_fill_n(elem, sz, T());
    }
    vvector(int _sz, int _space, T val): sz(_sz), space(_space)
    {
        elem = alloc.allocate(space);
        std::uninitialized_fill_n(elem, sz, val);
    }
 
    vvector(const vvector&); 
    vvector& operator=(const vvector&);
 
    virtual ~vvector() { // destructor
        for (int i = 0; i < sz; i++)
            alloc.destroy(&elem[i]);
        alloc.deallocate(elem, space);
    }
 
    T& operator[](int n) { return elem[n]; } // access without range checking
    const T& operator[](int n) const { return elem[n]; } // access without range checking
 
    T& at(int n); // access with range checking
    const T& at(int n) const; // access with range checking
 
    int size() const { return sz; }  // the current size
    int capacity() const { return space; }
 
    void reserve(int newalloc);
    void resize(int newsize, T value = T());
    void push_back(T value);
};
Кстати, если позабивать память таким образом (Ram = 8 Gb) то максимально доходит до 1 гб, почему вся не забивается?
Какие-то опции компилятору поставить пади?
C++
1
2
3
4
5
6
7
8
9
10
11
12
while (true)
    {
        try
        {
            vd3.push_back(rand());
        }
        catch (std::bad_alloc ba_exp)
        {
            cerr << ba_exp.what() << endl;
            break;
        }
    }
 
Текущее время: 14:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru