Запись значений в контейнер map
Есть определенного размера std::list<int> lis, который заполнен значениями, а также есть std::map<int, bool> mp. Мне нужно заполнить ключи mp значениями из lis, а также проверить их на свойство и результат записать в значения mp. Как это можно осуществить?
Ответы (1 шт):
Вообще говоря, как я понимаю вопрос - он довольно простой, и в основном - на синтаксис языка и простейшие операции с контейнерами.
Предложу такое решение (и с удовольствием выслушаю критику, так как никто не идеален, а уж я и подавно):
#include <iostream>
#include <fstream>
#include <map>
#include <list>
using namespace std;
bool check_property(int n){
return n%2==0;
}
int main(){
ifstream ifs("input.txt");
list<int> lis;
int n;
do {
ifs >> n;
lis.push_back(n);
} while (!ifs.eof());
cout << "lis size=" << lis.size() << endl;
map<int, bool> mp;
for( auto& x : lis)
mp[x]=check_property(x);
for( const auto& item : mp )
cout << "mp[" << item.first << "] = " << item.second << endl;
}
Здесь происходит заполнение контейнера из файла, потом проверчяется условие "число - четное", потом печатается состояние mp. Правда, я не рассматриваю случай, когда данные в lis повторяются (впротчем, к ошибке это не приведет)
Пример файла input.txt:
1
12
65
13
2
7
81
4
71
6
Пример вывода программы:
lis size=10
mp[1] = 0
mp[2] = 1
mp[4] = 1
mp[6] = 1
mp[7] = 0
mp[12] = 1
mp[13] = 0
mp[65] = 0
mp[71] = 0
mp[81] = 0
Но, вообще говоря, Вы рискуете, что Ваш вопрос будет закрыт, потому что "учебные задания допустимы только в случае, если вместе с вопросом приведена попытка решения".