С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
-28 / 0 / 1
Регистрация: 14.09.2012
Сообщений: 47

Сортировка вектора, после добавление элементов

27.11.2012, 01:19. Показов 3464. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго.
Есть класс массив. После каждого добавления элемента он должен сортировать элементы по возрастанию.
Вот упрощенный пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class IntArray
{
public:
    IntArray() {}
    IntArray(int size) { m_ints.resize(size); }
    
    void Add(int index, int element)
    {
        m_ints[index] = element;
        sort(m_ints.begin(), m_ints.end());
    }
    int GetElement(int index) const { return m_ints.at(index); }
    
private:
    vector<int> m_ints;
};
но на деле всё совсем не так, всё из-за выделение памяти методом resize().
C++
1
2
3
4
5
6
7
8
9
10
11
int main()
{
   const char arrSize = 4;
   IntArray arr(arrSize);
   for(char i = 0; i < arrSize; ++i)
       arr.Add(i, rand()%100 + 1);
   for(char i = 0; i < arrSize; ++i)
       cout << arr.Get(i) << endl;
 
   cin.get();
}
на выводе какие то не понятные нули, вместо элементов.
Как решить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.11.2012, 01:19
Ответы с готовыми решениями:

Заданный вектор А, состоящий из n элементов. Переставить компоненты вектора, размещенные после самого элемента вектора А
Заданный вектор А, состоящий из n элементов. Переставить компоненты вектора, размещенные после самого элемента вектора А на начало, а...

Добавление и исключение элементов вектора
Задача Люди стоят в очереди, но никогда не уходят из её начала, зато могут приходить в конец и уходить оттуда. Более того, иногда...

Добавление элементов вектора в классе
Скажем так код отсебятина, сейчас изучаю по немногу программирование, в уроках была задачка более простого типа, мне же захотелось сделать...

30
-28 / 0 / 1
Регистрация: 14.09.2012
Сообщений: 47
27.11.2012, 03:45  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Avazart Посмотреть сообщение
C++
1
void Add(int index, int element)
Какой смысл index тут если массив все равно сортируется ?

Как говорил один препод писалось правой нагй
C++
1
2
3
4
5
6
...
IntArray arr(4);
arr.Add(3, 3);
arr.Add(0, 0);
arr.Add(1, 1);
arr.Add(2, 2);
Допустим вот такой случай? Вот такой вот смысл.
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
27.11.2012, 03:47
Ну так я вас не понимаю, о чем речь ? О доступе к элементу или добавлении новых элементов ?
0
-28 / 0 / 1
Регистрация: 14.09.2012
Сообщений: 47
27.11.2012, 03:50  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Ну так я вас не понимаю, о чем речь ? О доступе к элементу или добавлении новых элементов ?
Добавление элементов в пределах выделенной памяти.
Для доступа там есть метод Get, если вы не видели.
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
27.11.2012, 03:54
Добавление элементов в пределах выделенной памяти.
Ну вот а говорите не путаете людей...

Если память выделена, значит значение уже есть, добавлять нечего ( вопрос конечно чем они проинициализированны ).
А значит речь уже об доступе, изменении.
0
-28 / 0 / 1
Регистрация: 14.09.2012
Сообщений: 47
27.11.2012, 04:03  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Ну вот а говорите не путаете людей...

Если память выделена, значит значение уже есть, добавлять нечего ( вопрос конечно чем они проинициализированны ).
А значит речь уже об доступе, изменении.
Ну, от ваших постов мы к решению приблизились на целых 0%.
Что, хабрач что-ли закрыли, философ?
Вот такие они, гуманитарий программисты, на словах Бьерны Страуструпы, а на деле ... ну вы поняли.
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
27.11.2012, 04:06
Ну, от ваших постов мы к решению приблизились на целых 0%.
Я пока и задачи внятно не расслышал... и не мы, а вы...
0
 Аватар для ps10n1ck
56 / 50 / 11
Регистрация: 10.11.2010
Сообщений: 132
27.11.2012, 04:19
Цитата Сообщение от vechestva Посмотреть сообщение
ps10n1ck, ну, а теперь попробуйте добавлять элементы по разным индексам?
а смысл в индексах, если потом массив сортируется?
получается так:
Вы выделяете память под 4 элемента, они инициализируются все 0.
Потом присваиваете 0-му элементу значение rand()%100 + 1 (пусть 17) и делаете сортировку - результат таков:
m_ints[0] = 0;
m_ints[1] = 0;
m_ints[2] = 0;
m_ints[3] = 17;
Потом присваиваете 1-му элементу значение rand()%100 + 1 (пусть 21) и делаете сортировку - результат таков:
m_ints[0] = 0;
m_ints[1] = 0;
m_ints[2] = 17;
m_ints[3] = 21;
Потом присваиваете 2-му элементу значение rand()%100 + 1 (пусть 10), тут вы перезаписываете значение 17 (которое ранее находилось по этому адресу) и делаете сортировку - результат таков:
m_ints[0] = 0;
m_ints[1] = 0;
m_ints[2] = 10;
m_ints[3] = 21;
Потом присваиваете 3-му элементу значение rand()%100 + 1 (пусть 55), тут вы перезаписываете значение 21 (которое ранее находилось по этому адресу) и делаете сортировку - результат таков:
m_ints[0] = 0;
m_ints[1] = 0;
m_ints[2] = 10;
m_ints[3] = 55;

вроде бы правильно объяснил причину появления нулей
1
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
27.11.2012, 04:22
Ну так это и тут видно https://www.cyberforum.ru/post3760882.html.
Добавить элемент нельзя данным методом по тому как для этого нужно что-то затереть...
1
 Аватар для ps10n1ck
56 / 50 / 11
Регистрация: 10.11.2010
Сообщений: 132
27.11.2012, 04:26
Цитата Сообщение от Avazart Посмотреть сообщение
Ну так это и тут видно https://www.cyberforum.ru/post3760882.html.
Добавить элемент нельзя данным методом по тому как для этого нужно что-то затереть...
по всей видимости пропустил данный ответ =)
1
-28 / 0 / 1
Регистрация: 14.09.2012
Сообщений: 47
27.11.2012, 06:39  [ТС]
ps10n1ck, ну это очевидно было. Но спасибо хоть постарался.
Мне нужно было найти другое решение. Про сортировку; иногда нужно менять методы сортировок.
Есть задача - нужно выполнить как задано. Даже если задача очевидно тупая. Преподов не устраивает ответ в виде :"зачем изобретать, когда есть уже велосипеды в виде контейнеров".
Вот так вот, наш гуманитарий Avazart.

Не по теме:

P.S: препод не мой, я уже давно не студент.

0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
27.11.2012, 19:56
Я технарь из технарей, но вот из-за таких горе- недо- программистов станешь не только философом, но и психоаналитиком )

Цитата Сообщение от vechestva Посмотреть сообщение
P.S: препод не мой, я уже давно не студент.
Такое впечатление что и не учились вообще...
А если б учились то знали что обычный препод все равно за дробит вашу писанину так как вы уже используете STL в своем коде.

Поэтому не для вас, а для тому кому это нужно... я бы посоветовал поискать по форуму готовый класс set c "самопальной" реализацией ... такое не раз проскакивало на форуме...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2012, 19:56
Помогаю со студенческими работами здесь

Сортировка вектора массива после удалание элемента
дан массив векторов из 20 чисел; vectorArr = {0,1,2,3,4,5...}; удаляем методом vectorArr.erase(vectorArr.begin()+index); вопрос : как...

Выделение столбцов из матрицы, сортировка полученного вектора, перестановка элементов вектора
Здравствуйте!Нужна помощь в пояснении. Дано задание в файле.По раздельности я примерно понимаю как это сделать,но я так понимаю это все...

Сортировка элементов вектора
Вектор состоит из элементов типа Struct. Их нужно отсортировать по названию в алфавитном порядке, а при совпадении названия отсортировать...

Сортировка элементов вектора
Добрый вечер! Набросал наглядный пример, который вызывает ошибку компиляции. class My_Class { public: struct Item {...

Сортировка элементов вектора
Выполнить сортировку элементов в векторе


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru