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

Аналог realloc, знающий классы и вызывающий конструкторы/деструкторы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ одномерный массив http://www.cyberforum.ru/cpp-beginners/thread447680.html
Удалить все четные элементы
C++ Количество спиралей Решение задачи мне не нужно, требуется только логическое разъяснение хода действий. Спираль — это ломаная не нулевой длинны без самопересечений, вершины которой размещены в точках с целыми координатами на плоскости. Каждое последующее звено ломаной, должно быть повёрнуто на 90 градусов относительно предыдущей по часовой стрелке. Рассмотрим прямоугольник размерами n на m. Для каждой спирали, её... http://www.cyberforum.ru/cpp-beginners/thread447658.html
C++ Считывание памяти
Чтото не понятное в голову пришло, вот хотелось бы узнать мнение експертов. Допустим у нас есть игра, в игрей карта, с отображением юнитов и тому подобное.. Можно ли какмто образом программно считать все даенные с игры кастательно перемешения юнитов нахождения построек. Насколько это сложно, и вообше возможно ли? Что для этого нужно знать, какие методы использовать, эксперты подскажите:)
Написать программу, которая выводит минимальный элемент введенного с клавиатуры массива целых чисел C++
вот есть задача.... Написать профамму, которая выводит минимальный элемент введенного с клавиатуры массива целых чисел. Ниже приведен рекомендуемый вид экрана во время работы профаммы (данные, введенные пользователем, выделены полужирным шрифтом). вот её решение..... #include <stdio.h> #include <conio.h>
C++ Переставить буквы в слове http://www.cyberforum.ru/cpp-beginners/thread447645.html
Здравствуйте, прошу помочь с программой: C клавиатуры вводится слово с четным кол-вом букв, нужно поделить его пополам и поменять части этого слова местами. Пример: CyberForum -> ForumCyber Вывод данных представить в TList
C++ Массив Помогите пожалуйста написать функцию: Подсчитать количество элементов с четными значениями. Массив задан размером n=10; подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1591 / 983 / 116
Регистрация: 27.09.2009
Сообщений: 1,898
Завершенные тесты: 1
17.02.2012, 19:15     Аналог realloc, знающий классы и вызывающий конструкторы/деструкторы
Чтобы далеко не лазить, опишу вкратце, как оно там сделано. При увеличении размера вектор

а) вручную выделяет новый кусок памяти нужного размера: new_capacity * sizeof(type)

б) копирует содержимое старого куска памяти в новый при помощи вызовов in-place new, что можно грубо выразить следующим кодом:
C++
1
2
3
4
5
6
7
8
9
for(size_t i=0; i<this->size(); ++i)
{
#ifdef CPP_11  // если используется новый стандарт C++, то объекты перемещаются
    new (new_data + i) type(std::move(data[i]));
#else  // Ну или по-старому просто копируются
    new (new_data + i) type(data[i]);  // Копирование объекта в указанное место в уже выделенной памяти через вызов конструктора копирования
#endif
    data[i].~type();  // Старый объект уничтожается явным вызовом деструктора
}
в) старый кусок памяти освобождается и вектор начинает пользоваться новым
 
Текущее время: 14:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru