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

Перемещающий буффер - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Отсортировать по имени http://www.cyberforum.ru/cpp-beginners/thread1178614.html
Помогите!Надо отсортировать по имени. C типом int проблема в сортировки нету. c char не могу разобраться. Нашел похожие примеры, не вышло. Я открыл файл для чтения. Как быть дальше? ...
C++ переделать кусочек кода работа с файлами и структурами 1) Суть в том, что прога удаляет элемент с заданным номером, а нужно удалить элементы, численность которых меньше заданной с клавы. 2) Прога добавляет элемент в начало, а надо с указанным номером.... http://www.cyberforum.ru/cpp-beginners/thread1178611.html
Написать программу, где будет записанна последовательность целых чисел C++
Условие: В текстовом файле записана последовательность целых чисел, разделённых пробелами. Записать в другой текстовый файл все положительные числа из первого в порядке возрастания.
C++ Написать процедуру/функцию нахождения произведения ненулевых элементов
Написать процедуру/функцию нахождения произведения не нулевых диагональных элементов заданной квадратной матрицы. С использованием комментариев.
C++ Задать функцию которая возвращает частное деление двух чисел (обработка ошибок - через исключения) http://www.cyberforum.ru/cpp-beginners/thread1178573.html
Ребят,срочно нужнатваша помощ.Задать функцию,которая возвращает частное деление двух чисел.Обработку ошибок реализовать через исключительные ситуации.привести пример правильного вывода этой функции
C++ Как поместить 16 цифр в int Подскажите что можно написать вместо int bit нужно целочисленный тип который может поместить 16 цифр, double помещает но тогда не работает этот Obbit.arrayBit = bit % 10; фрагмент кода bool... подробнее

Показать сообщение отдельно
Misha_prog
0 / 0 / 0
Регистрация: 15.04.2013
Сообщений: 184

Перемещающий буффер - C++

17.05.2014, 12:39. Просмотров 135. Ответов 0
Метки (Все метки)

Всем Привет! делаю собственный класс строк. там в конкаенации строк по несколько раз перевыделяю память .... вот . Слышал что можно сделать что то типа перемещающегго буффер , но вообще не понимаю как его так можно сделать вот пример моей конкатенации строк
C++
1
2
3
4
5
6
7
8
CMyString  CMyString::operator+(CMyString const & str)
{
    
    CMyString tmpStr(*this); // вот что  то типа здесь можно сделать без копии а созданием move буффера 
    tmpStr += str;
 
    return tmpStr; 
}
а вот опретаор +=
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void ConcatStr(char * res, const char * first, const char * sec, size_t countFirst, size_t countSec)
{
    memcpy(res, first, countFirst);
    memcpy(res + countFirst, sec, countSec);
    res[countFirst + countSec] = '\0';
}
 
CMyString & CMyString::operator+=(CMyString const & str)
{
    size_t tmpSize = size + str.size;
    char * temp = pChars;
    pChars = new char[tmpSize + 1];
    ConcatStr(pChars, temp, str.GetString(), size, str.size);
    size = tmpSize;
    delete[] temp;
    
    return *this;
}
может кто нибудь сталкивался с подобными пробемами вот в этой строке
C++
1
CMyString tmpStr(*this); // вот что  то типа здесь можно сделать без копии а созданием move буффера
как нибудь сделать так чтоб память не выделялась и да конечно нужно ещё учитывать и сложение не только со своими строками но и stl' ской строкой...или кто нибудь знает где про это почитать подробнее можно
Всем Спасибо за внимание!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru