Почему встроенная сортировка не умеет сортировать карту векторов?

Если у вас есть такая конфигурация:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot "/var/www/example.com"

    <FilesMatch "\.php$">
        SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>
</VirtualHost>

Раскомментируйте следующие строки в вашем httpd.conf

LoadModule proxy_module lib/httpd/modules/mod_proxy.so
LoadModule proxy_fcgi_module lib/httpd/modules/mod_proxy_fcgi.so

Это работает для меня

3
задан Aditya Ishan 24 March 2019 в 20:02
поделиться

1 ответ

При циклическом просмотре записей в map1 вы копируете каждый узел. Следовательно, сортировка выполняется на независимом, недавно созданном экземпляре std::vector<int>, и изменения в этой переменной, локальной для цикла (например, сортировка ее), уже потеряны на следующей итерации.

Вам нужно изменить центральный диапазон для цикла на

for(auto& i : map1) {
   //   ^ Loop over references to map nodes, not copies!
   std::sort(i.second.begin(), i.second.end());
}

Так же, как примечание, когда вы можете использовать C ++ 17, вы можете использовать структурированные привязки, чтобы сделать цикл более выразительный по

for(auto& [key, vec] : map1) {
   std::sort(vec.begin(), vec.end());
}
0
ответ дан lubgr 24 March 2019 в 20:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: