- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
//
// true - success
// false - value not found for given key
//
bool CATStorage::getValueForKey(const std::string &key, std::string &value) const
{
...
std::string().swap(value);
...
}
"The swap trick" по Мейерсу.
Частный случай своп трика для пустого контейнера.
value = "" не гарантирует ошибку.
говнопостер убейся, это нормальный код.
"не гарантирует ошибку" = не гарантирует освобождение памяти
нормальный, и даже рекомендуемый...
Супер код!
всегда делал так:
template<class T> void clear(T& obj)
{
T temp;
obj.swap(temp);
}
и почему-то не приходило в голову вместо temp использовать временный анонимный объект!
template<class T> void clear2(T& obj)
{
T().swap(obj);
}
спасибо за идею! Этому коду место не здесь, а в учебниках по C++.
Автор видать не в курсе, что clear может не убивать память.
Какой анскилл )))
К "говнокоду" можно сразу относить всё то что написано для освобождения ресурсов контейнеров STL, людьми, которые не знают такой возможности. А "шедевров" на эту тему встречается тоннами.
так оптимизить строки - я бы не рекомендовал.
Гамнокод.
Вектора на мегабайты - да. А если в строке хранить тонну и потом так чистить - явно - гамно.