Быстрое заполнение контейнера

Posted: воскресенье, 18 октября 2009 г.

На днях друг-олимпиадник подкинул интересный способ быстрого заполнения контейнера.

template <typename _T, typename _V>
std::vector<_T> & operator,(std::vector<_T> & _vec, _V _elem)
{
    _vec.push_back(_elem);
    return _vec;
}

Такой «ход конём» имеет смысл использовать только для ускорения процесса разработки, потому что использование такого подхода многих может сбить с толку. Но в целом использование перегруженной запятой смотрится довольно красиво и логично:

std::vector<int> someMethod()
{
    // bla-bla-bla
    // вернуть вектор из трех элементов:
    std::vector<int> v;
    return (v, 1, 2, 3);
}

По аналогии можно сделать перегрузку и для других контейнеров. Кстати, в библиотеке Qt для всех контейнеров перегружен оператор <<, выполняющий аналогичную задачу.

P.S. Если будете использовать такое, не забудьте описать в конвенции ;)

Progg it

blog comments powered by Disqus