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

Какой контейнер выбрать (Нужен массив, с возможностью добавления и удаления элементов)? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нод для 2-х заданных натуральных чисел с циклом while http://www.cyberforum.ru/cpp-beginners/thread1216071.html
привет,всем)помогите,пожалуйста, с программой #include<iostream> #include<windows.h> using namespace std; int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); int a,b,j;
C++ Изменить функцию Очень такой простой вопрос ) Вот код функции, которая ищет в тексте последовательность сииволов и заменяет её. void find_and_replace(string& source, string const& find, string const& replace) { for(string::size_type i = 0; (i = source.find(find, i)) != string::npos;) { source.replace(i, find.length(), replace); i += replace.length() - find.length() + 1; } } http://www.cyberforum.ru/cpp-beginners/thread1216066.html
Как лучше всего создать форму в С++ C++
Хочу попробовать создать не консольную программу, а графическую. Как лучше всего создавать формы?
Ввести текст и вывести на экран все введенные слова с парным количеством букв C++
Ввести текст и вывести на экран все введенные слова с парным количеством букв.
C++ Подскажите, как реализовать отрисовку своего меню в окне сторонней игры(cs 1.6)? http://www.cyberforum.ru/cpp-beginners/thread1216037.html
Подскажите, как реализовать отрисовку своего меню в окне сторонней игры(cs 1.6) ? Так то понятно, хукать opengl функции, но в плане реализации есть затруднения. Есть у кого то исходник чего то подобного ?
C++ Разноцветные буквы в консоли Нужно сделать штоб, ну например слово !привет! каждая буква разново цвета, пробувал через system("color ");, но всьо равно не получаетса, не знаю может можна для каждой букви создавать цикл вгиле подробнее

Показать сообщение отдельно
Renji
1533 / 981 / 239
Регистрация: 05.06.2014
Сообщений: 2,953
25.06.2014, 04:01     Какой контейнер выбрать (Нужен массив, с возможностью добавления и удаления элементов)?
В моей задаче нужен массив, с возможностью добавления и удаления элементов, при этом добавлять можно куда угодно - в конец, например, а удаление может происходить отовсюду - из середины, из начала, и т.д..
Все просто как мычание.
1) std::vector - можно получить любой элемент за константное время. Но добавление/удаление элемента займет время пропорциональное размерам массива.
2) std::map - добавление/удаление займет логарифмическое время (вдвое больше тормозов каждый раз когда размер возводится в квадрат). Но поиск произвольного элемента также займет логарифмическое время.
3) std::list - удаление/добавление за константное время. Но элементы читать можно только по порядку.
Выбирай что больше подходит.
Т.е. если ты хочешь освободить уже не используемую память, то придётся выделить новый блок памяти нужного размера, скопировать туда оставшееся содержимое массива, освободить старый участок памяти
Это уже от реализации realloc зависит. Он может и просто прописать "занятый блок А уменьшился на один байт, свободный блок Б увеличился на один байт".

Добавлено через 7 минут
UPD еще можно попробовать std::unordered_map. При правильном расположении звезд поиск/вставка/удаление делаются за константное время. При неправильном расположении - как повезет. Перебор элементов возможен, но порядок элементов опять же зависит от звезд. И чтоб оно работало быстро, unordered_map должно заранее хапнуть памяти с большим запасом.
 
Текущее время: 20:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru