@Blunker

Как скопировать из map в vector?

Есть
map<string, size_t>
Тут храниться статистика встречаемости слов в тексте. Нужно переписать эта статистику в вектор
vector<pair<size_t, string>>
. Как это можно сделать?
  • Вопрос задан
  • 1073 просмотра
Решения вопроса 1
Просто использовать итераторы не получится в данном случае, так как итератор по map соответствует std::pair. Но можно сделать что-то наподобие такого:
#include <map>
#include <vector>
#include <string>
using namespace std;

int main() {
    typedef map <string, int> MapType;
    MapType m;	
    vector <int> v;
    //заполняем m как-то

    for( MapType::iterator it = m.begin(); it != m.end(); ++it ) {
    	v.push_back( it->second ); // помещаем в вектор необходимое поле. В данном случае it->second - значение int для строки
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AxisPod
@AxisPod
Если требуется именно перевернутая пара, то либо решить тупо как посоветовали с обычным циклом. Либо сделать свой insert_iterator, который сделает переворот данных и вставку в конец и использовать std::copy.

Без переворота ideone.com/307mAG .
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы