В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
elizavetava
elizavetava
21.03.2022 19:45 •  Информатика

Курсовая работа на тему: основы программирования на языке с/с++: дан целочисленный массив. преобразовать массив таким образом,чтобы а нам остались значения,повторяющиеся дважды 185

Показать ответ
Ответ:
NastenkaDrow
NastenkaDrow
08.10.2020 20:03
Используя boost библиотеку можно было это сделать ещё проще (нужно заканчивать баловаться boost'ом, ато совсем мозги атрофируются :D). Если посидеть и подумать чуть дольше 5 минут, можно и это решение улучшить, но оставлю это Вам)

#include <vector>
#include <iostream>
#include <algorithm>
#include <iterator>
#include <unordered_map>
using namespace std;
unordered_map<int, size_t> umap;

void KeepDuplicates(vector<int>& v)
{
    vector<int> tmp(v);
    for (size_t i = 0; i < tmp.size(); ++i)
    {
        unordered_map<int, size_t>::iterator pos = umap.find(tmp[i]);
        if (pos->second != 2)
        {   
            auto it = remove(v.begin(), v.end(), pos->first);
            v.resize(it - v.begin());
        }
    }
}

int main()
{
    vector<int> arr = { 3, 2, 3, 6, 2, 7, 5, 6, 9, 2 };
    for (const auto& i : arr) ++umap[i];
    KeepDuplicates(arr);
    copy(arr.begin(), arr.end(), ostream_iterator<int>(cout, " "));
}
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота