Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Для каждого столбца двумерного массива подсчитать сумму четных положительных элементов https://www.cyberforum.ru/ cpp-beginners/ thread1175459.html
III. Дан массив размером n×n, элементы которого целые числа. Замечание. Для хранения массив n×n использовать ступенчатый массив. Для каждого столбца подсчитать сумму четных положительных элементов...
Поменять местами два средних столбца двумерного массива C++
Дан массив размером n×n, элементы которого целые числа. Замечание:использовать двумерный массив. Поменять местами два средних столбца, если количество столбцов четное, и первый со средним...
C++ Отсортировать двумерный массив по главной и побочной диагонали.
#include <conio.h> #include <stdio.h> #include <stdlib.h> #include <locale.h> #include<time.h> int main() {
C++ Стоит ли изучить программирование в стиле С? Стоит ли изучит программирование в стиле С? В книге написано про строки в стиле С и настоятельно рекомендуется не использовать их при программирование. Так как я не хочу нагрузит себя не нужной... https://www.cyberforum.ru/ cpp-beginners/ thread1175427.html
C++ Утечка памяти в С++ (Borland C++ 3.1 под DOS) https://www.cyberforum.ru/ cpp-beginners/ thread1175368.html
Добрый день! Прошу помощи! Есть старая программа, которую мне надо адаптировать под новое оборудование. Но при выполнении выдает странные ошибки. Подозреваю, что где-то есть утечка памяти. Программа...
C++ Если элемент массива - вещественный оставить его без изменения, если целый, то прибавить к нему 0.1
//Обьявить динамический массив.Заполнить его целыми и вещественными числами. //ВВывести на экран массив(оформить как функцию). //если элемент вещественный оставить его без изменения,если целый ,то...
C++ Переделать на условный оператор и прокомментировать программу
и нужно переделать на условный оператор #include<stdio.h> #include<math.h> int Check(long a) { long b = abs(a); int digits = {0}, i; while (b) { digits++;
C++ Найти разницу между максимумом и минимумом в каждой строке массива Дана действительная матрица размером n*m. Определить числа {b}_{0}, ... , {b}_{n-1}, равные соответственно разностям наибольших и наименьших значений элементов строк. https://www.cyberforum.ru/ cpp-beginners/ thread1175315.html
C++ Цикл с предусловием (while), вычислить сумму ряда https://www.cyberforum.ru/ cpp-beginners/ thread1175314.html
Вычислить сумму ряда с точностью Е, общий член которого {a}_{n}=\frac{{(-1)}^{n-1}}{{n}^{n}}
C++ Вычислить сумму по заданной формуле с помощью цикла с предусловием (while) Пусть {X}_{1}={Y}_{1}=1; {X}_{i}=0.3*{X}_{i-1}, {Y}_{i}={X}_{i-1}+{Y}_{i-1}, i=2,3,... . Дано натуральное число n. Найти \sum_{k=1}^{n}\frac{{X}_{i}}{1+|{Y}_{i}|} https://www.cyberforum.ru/ cpp-beginners/ thread1175313.html
0 / 0 / 0
Регистрация: 14.05.2014
Сообщений: 8
0

Std::set( vector ) и расход памяти

14.05.2014, 10:40. Просмотров 2996. Ответов 17
Метки (Все метки)

Здравствуйте!
Пытаюсь разобраться сколько памяти съедают контейнеры и никак не могу понять следующее. Вот есть код( ниже)
В конце стоит бесконечный цикл(знаю что так делать нельзя) только для того чтобы в таск менеджере посмотреть сколько памяти мы съели.
На экран выводится:
size1= 0.4666; size2 = 1,430;
size3 = 4,1008
При этом в таск менеджере расход показывает 6,11
Если set заменить на вектор ( выделив ему память ровно столько сколько элементов )
то вывод останется таким же а в таск менеджере мы увидим число 3,45.
Почему в случае set памяти больше чем size3?
и меньше в случае вектора?
Спасибо
Upd в строке 3 vtos() преобразует число в строку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    
set<string> res;
    for(uint x = 0; x<100000;++x) res.insert( vtos(x,0) );
    uint result = 0;
    cout << "Res.size() == " << res.size() << endl;
    uint size1=0;uint size2=0;uint size3=0;
    set<string>::const_iterator it=res.begin();
    for(;it!=res.end();++it){
        string str = *it;
        size1+=str.size();
        size2+=str.capacity();
        size3+=str.capacity() + sizeof(string);
}
    cout << "size1 == " << ((float)size1)/1024/1024 << endl;
    cout << "size2 == " << ((float)size2)/1024/1024 << endl;
    cout << "size3 == " << ((float)size3)/1024/1024 << endl;
while(true){}


Вернуться к обсуждению:
Std::set( vector ) и расход памяти
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2014, 10:40
Готовые ответы и решения:

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же...

Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию?
Здравствуйте. Почитал на форуме, но так и не понял что я делаю не так. Имеется двумерный вектор....

Представление памяти std::vector
Добрый день! Вопрос по вектору, из его описание следует, что он располагает свои элементы линейно...

std::vector Перераспределение памяти
Код #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;tchar.h&gt;...

17
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.