Я знаю, что это может выглядеть как вопрос новичка, уже задаваемый тысячу раз. Но я искал точный ответ и не нашел его ...
Я работаю над кодом, который, чтобы подвести итог, заполнить XML другими данными.
IЯ пытаюсь оптимизировать часть этого. «Наивный» код выглядит следующим образом:
xml << "<Node>";
for(auto& input : object.m_vec)
{
if(input == "Something")
{
xml << input;
}
}
xml << "</Node>";
for(auto& input : object.m_vec)
{
if(input == "SomethingElse")
{
xml << "<OtherNode>";
xml << input;
xml << "</OtherNode>";
break;
}
}
Важно то, что, хотя более чем один вход подходит для <Node></Node>
, только один подходит для <OtherNode></OtherNode>
(объясняя break;
), и этоможет и не существовать (объяснение xml <<
между if
оператором).
Я думаю, что я мог бы оптимизировать его, например:
std::vector<std::string>* VecPointer;
xml << "<Node>";
for(auto& input : object.m_vec)
{
if(input == "Something")
{
xml << input;
}
else if(input == "SomethingElse")
{
VecPointer = &input;
}
}
xml << "</Node>";
if(!VecPointer->empty())
{
xml << "<OtherNode>"
<< *VecPointer
<< "</OtherNode>";
}
Смысл для меня здесьчто нет необходимости в дополнительной памяти и нет дополнительного цикла. Но указатель на локальную переменную беспокоит меня. В глазах моего новичка я не вижу случая, когда это может привести к чему-то неправильному.
Это нормально? Почему? Вы видите лучший способ сделать это?