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

copy on write оптимизация - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ C++ and dll -> нужна консультация на моём примере http://www.cyberforum.ru/cpp-beginners/thread574850.html
Нужно загрузить несколько классов в dll, а потом, в другом проекте прочитать эти классы из dll и, используя этот dll с помощью механизмов позднего связывания что-нибудь поделать) Классы есть:...
C++ Нахождение минимальной строки в массиве и смена мест в ней строк Из 32 положительных, отрицательных и нулевых значений чисел сформируйте матрицу 4 х 8. Поменяйте местами строку, содержащую минимальный элемент, с первой строкой, выдайте преобразованную матрицу. ... http://www.cyberforum.ru/cpp-beginners/thread574847.html
C++ scanf,cin разбор ввода данных
Доброго времени суток :) Подскажите как взять с консоли или скажем с файла(fscanf) 2 числа и текст между (текст и числа разделены знаками препинания) или до них вот пример: 15.Text.23 ...
Двойной указатель C++
Это не совсем C++ вроде, а просто C, но поясните, пожалуйста, зачем в коде в строчку **sums=NULL используется двойной указатель? #include <stdio.h> #include <process.h> #include <math.h> float...
C++ как узнать время работы программы решения алгоритма http://www.cyberforum.ru/cpp-beginners/thread574816.html
Добрый вечер! Подскажите, пожалуйста, как сделать так, чтобы программа выводила на экран время, затраченное на решение алгоритма? Можно ли узнать, сколько ресурсов затрачено на решение? #include...
C++ последовательность Даны n, последовательность n x , x ,...x 1 2 . Получить (1+R)/(1+S), где R – сумма тех членов последовательности, которые не превосходят 1, а S – сумма членов, больших 1. Использовать динамические... подробнее

Показать сообщение отдельно
Alex_oo7
50 / 61 / 4
Регистрация: 18.10.2010
Сообщений: 240

copy on write оптимизация - C++

15.05.2012, 02:24. Просмотров 1643. Ответов 20
Метки (Все метки)

Требуется сделать copy on write оптимизацию, но я не знаю как мне верно перенаправлять указатели / ссылки
Оптимизация состоит в том, что бы полностью копировать объект только при новой записи.

Как такое можно провернуть ?
Я примерно представил, что нужно грамотно определить оператор =
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
bool replace;
std::vector<int> v, dv;
myclass() {     
        replace = false; 
        dv.resize(1);
        dv[0] = 0;
        std::vector<int>* p = &v;
        p = &dv;
    }
myclass(long get_i) {       
        replace = false; 
        dv.resize(1);
        dv[0] = get_i;
        std::vector<int>* p = &v;
        p = &dv;
    }
void operator =(myclass& a) {       
        if (a.replace) {
            dv = a.dv;
            std::vector<int>* p = &v;
            p = &dv;        
        } else {
            dv = a.dv;
            std::vector<int>* p = &v;
            p = &a.dv;              
        }
    }
Суть в том, что везде, кроме стандартного объявления myclass поле replace всегда true например при сложении вычитании и т.д.
Я создал собственное значение dv, и переменная v либо указывает на своё dv, либо на присвоенное a.dv

К переменной v всюду обращаются как к std::vector<int>

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