J'essaie de transformer un vecteur d'instances foo en une chaîne mais j'ai une erreur fatale sur std :: transform.erreur fatale sur std :: transformer C++
Say data
a la valeur suivante:
[0]
[name] = John
[size] = 3423
[1]
[name] = Joseph
[size] = 3413
code:
struct foo {
foo(std::string n, size_t s)
: name(std::move(n)),
size(s)
{
}
std::string name;
size_t size;
};
std::string server = "1";
std::vector<std::string> output;
output.reserve(static_cast<unsigned_long>(std::distance(std::begin(data), std::end(data))));
std::transform(std::begin(data),
std::end(data),
std::begin(output),
[&, this](foo const& item){
std::ostringstream result;
data << server << ","
<< item.name << ","
<< item.size << ";";
return result.str();
});
Lors du débogage, il arrête à la ligne *__result = __unary_op(*_first)
de tranform
mise en œuvre stl_algo.h
passe ensuite à FatalConditionHandler du framework de test de capture. Je suis nouveau à la fois pour tester les tests et std :: transform. Quelqu'un peut-il expliquer ce qui pourrait causer le problème et comment le résoudre? Merci beaucoup!
Est-ce que cela devrait être 'résultat << serveur << ...'? – BoBTFish
'std :: vector :: reserve' ne fait pas ce que vous pensez. 'resize' est plus précis, mais même dans ce cas, vous pourriez vouloir éviter cela. – AndyG