Consider the example below. config_parser
is an object of a class whose method variable_map()
returns an object of the type std::map<std::string, std::vector<std::string>>
. The first loop gives incorrect or garbage result while the second loop give correct result. What am I missing?
Compilers tested with: GCC 6.3.1, clang 3.9.1, (c++14)
std::vector<std::string> rules = config_parser.variable_map()["CellQRule"];
for (const auto rule : config_parser.variable_map()["CellQRule"]) {
std::cout << rule << std::endl;
}
for (const auto rule : rules) {
std::cout << rule << std::endl;
}
The following code also gives correct result for both the loops.
auto map = config_parser.variable_map();
auto q_rules = map["CellQRule"];
for (const auto rule : map["CellQRule"]) {
std::cout << rule << std::endl;
}
for (const auto rule : q_rules) {
std::cout << rule << std::endl;
}
Aucun commentaire:
Enregistrer un commentaire