Изменение элементов в multiset

172
10 мая 2018, 07:39

Есть мультимножество,нужно ко всем элементам прибавить чилсло,как это можно сделать,ведь элементы в multiset нельзя изменять.

Answer 1
#include <bits/stdc++.h>
using namespace std;
multiset<int> setplus(multiset<int> S, int num){
   multiset<int> result;
   for_each(S.begin(), S.end(), [=, &result] (int el) -> void {
    result.insert(el + num);
   });
   return result;
}
int main() {
   multiset<int> S;
   for(int i = 1;i <= 5;i++) S.insert(i);
   S = setplus(S, 1);
   for_each(S.begin(), S.end(),[] (int el) -> void {
    cout << el << "\n";
   });
}

Один из вариантов, просто забить все в новый мультисет.

Answer 2

То же самое, что было в первом ответе, можно выразить более эффективным кодом:

int main()
{    
    std::multiset<int> S, res;
    for (int i = 1; i < 5; ++i)
        for(int j = 0; j < 3; ++j)
            S.insert(i);
    std::transform(S.begin(), S.end(), std::inserter(res, res.end()), [](int i) {return ++i;});
    std::copy(res.begin(), res.end(), std::ostream_iterator<int>(std::cout, " "));
    return 0;
}
READ ALSO
Обработка текста c++

Обработка текста c++

Выполнить построчную обработку текстаесли выбранный символ встречается впервые удвоить его

230
Дружественные функции

Дружественные функции

Есть класс, в котором объявлена дружественная функция, я хочу её определить тут же, те

186
Использовать Cuda в существующем проекте

Использовать Cuda в существующем проекте

Мне по диплому нужно оптимизировать алгоритм (resize) библиотеки Magick++ при помощи Cuda

208
Добрый день! есть todo List .а localStorage не работает до конца) Что не так? заранее благодарю за помощь!

Добрый день! есть todo List .а localStorage не работает до конца) Что не так? заранее благодарю за помощь!

Вы не показали (не написали?) код, который использует элементы загруженного массивa todos для создания DOM-элементов во время загрузки страницы...

195