Рассмотрим std::vector<T> для некоторого типа T. Я получаю указатель на такой тип в функцию, а также экземпляр T; t сказать.

Моя функция выглядит так:

void bar(std::vector<T>* foo, const T& t)
{
    foo->clear();
    foo->push_back(t);
}

Есть ли способ написать тело функции в одном выражении? *foo = t; не работает из-за отсутствия соответствующего оператора присваивания. Я также думал об использовании

foo->assign(&t, &t + 1);

Но это кажется капризным

Я использую C ++ 11.

4
Michael Bullock 28 Фев 2017 в 19:45

2 ответа

Лучший ответ

Конечно, вы можете переназначить:

*foo = {t};
10
AndyG 28 Фев 2017 в 16:47

Есть ли причина, по которой вы не можете просто использовать другие assign() функции-члена std::vector<>?

void bar(std::vector<T>* foo, const T& t)
{
    foo->assign(1, t);
}
4
Bård Skaflestad 28 Фев 2017 в 19:14