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

Непонятное поведение list, vector в другом классе - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программы - оценка труда http://www.cyberforum.ru/cpp-beginners/thread923451.html
Каким образом оценивают стоимость программы? хоть как-то примерно. По сути можно продать Hello World прогармму за 100 долларов при сильном желании) Но в действительности, по каким критерия оценивается?
C++ new и delete Ошибка, незнаю как для моего класса выделить память. Как исправить? class MyClass { int a, b, c; public: MyClass(int a, int b, int c) } http://www.cyberforum.ru/cpp-beginners/thread923428.html
Ошибка в решении задачи "Судоку" (acmp) C++
Здравствуйте. Судоку размера n называется квадрат со стороной n2, разделенный на n2 средних квадратов со стороной n, каждый из которых разделен на n2 маленьких квадратов. В каждом маленьком квадрате записано число от 1 до n2. Судоку называется правильным, если в каждом столбце, каждой строке и каждом среднем квадрате встречаются все числа от 1 до n2. Недавно Вася нарисовал Судоку...
C++ Сравнить два int числа расположенных в char* строке
Всем првиет. Имею проблему связанную с быстродействием. Нужно сравнить 2 строки на больше/меньше/равно. Каждый символ строки - число. строка строго 7 символов, т.е. 7 чисел. При приведении к int через функцию atoi() идет большая задержка (т.к. мильен итераций цикла, где находится данная проверка). Посоветуйте алгоритм сравнения.
C++ Неправельно работает конструктор(наверно) http://www.cyberforum.ru/cpp-beginners/thread923396.html
Вот класс и вот конструктор думаю знающие люди разберутся я создаю 1 элемент класса точнее указатель first на элемент который будет головным элементом динамического списка... если запустите программу увидите что создается 2 элемента и потом деструктор уничтожает 2й НО! не уничтожает первый и программа завершается..Почему?и работать не через указатель а создавать просто элементы класса то все...
C++ Кольцевой буфер Здравствуйте, уважаемые пользователи. Мне поставили задачу, которую я один решить не могу и поэтому обращаюсь за помощью к вам. Итак, у нас есть файл и мне нужно отфильтровать его. Но он просто огромный и мне сказали реализовать эту процедуру с помощью кольцевого буфера. Я не до конца понимаю каким образом мне сформировать его и сделать так, чтобы при окончании буфера он автоматически скидывал... подробнее

Показать сообщение отдельно
monolit
182 / 182 / 21
Регистрация: 24.03.2011
Сообщений: 657
Завершенные тесты: 1
15.07.2013, 17:29  [ТС]     Непонятное поведение list, vector в другом классе
Возник такой вопрос: может ли при текущем определении _auxObserver'а неправильно работать оператор присваивания по умолчанию? И еще. Ниже класс матрицы, в которой я вначале пытался хранить этот _auxObserver напрямую, т.е. gmMatrix<_auxObserver> -- не работало. но gmMatrix<_auxObserver*> работает ка надо, и insert и push_bask корректно себя ведут. Где может быть это узкое место, из-за которого это происходит?)

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
template<typename T>
class gmMatrix {
    T** mData;
    int mWidth, mHeight;
 
    inline void destroy() {
        if (mData) {
            for(int i = 0; i<mWidth; ++i) delete[] mData[i];
            delete[] mData;
            mData = 0;
        }
    };
    inline void create(int width, int height, const T& val) {
        mData = new T*[width];
        for(int i = 0; i<width; ++i) {
            mData[i] = new T[height];
            for(int j = 0; j<height; ++j) mData[i][j] = val;
        }
        mWidth = width;
        mHeight = height;
    };
public:
    gmMatrix(): mData(0), mWidth(0), mHeight(0) {};
    gmMatrix(const gmMatrix<T>& matrix): mData(0) {
        mWidth = matrix.mWidth;
        mHeight = matrix.mHeight;
        mData = new T*[mWidth];
        for(int i = 0; i<mWidth; ++i) {
            mData[i] = new T[mHeight];
            for(int j = 0; j<mHeight; ++j) mData[i][j] = matrix.mData[i][j];
        }
    };
    gmMatrix(int width, int height, const T& val = 0): mData(0) {
        create(width, height, val);
    };
    ~gmMatrix() {
        if (mData) {
            for(int i = 0; i<mWidth; ++i) delete[] mData[i];
            delete[] mData;
        }
    };
 
    gmMatrix<T>& operator = (const gmMatrix<T>& matrix) {
        if (this == &matrix) return *this;
 
        destroy();
        mWidth = matrix.mWidth;
        mHeight = matrix.mHeight;
        mData = new T*[mWidth];
        for(int i = 0; i<mWidth; ++i) {
            mData[i] = new T[mHeight];
            memcpy(mData[i], matrix.mData[i], sizeof(T)*mHeight);
        }
        return *this;
    };
 
 
    inline int height() const {
        return mHeight;
    };
    inline int width() const {
        return mWidth;
    };
 
 
    inline T& operator () (int i, int j) {
        return mData[i][j];
    };
    inline const T operator () (const ipair& point) const { 
        return mData[point.first][point.second];
    };
    inline const T operator () (int i, int j) const {
        return mData[i][j];
    };
};
Вот такие дела... Грешу на оператор присваивания и sizeof(T)(авось ему размер точно неизвестен, хотя вроде все должно быть нормально), больше хз. A add вызывается для элемента этой матрицы.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru