У меня есть функция, которая получает std::vector<int>
как таковой:список Вектор инициализатор передается в качестве параметра функции
void foo(std::vector<int>);
И я хотел бы неоднократно называть foo()
с малыми векторами, генерируемых на лету. Я пытался создать новый вектор «на лету», используя список инициализаторов, но он, кажется, выделяет вектор размером n вместо инициализации.
Например:
foo(std::vector<int> { 1});
foo(std::vector<int> { 4});
foo(std::vector<int> { 5});
Кажется создать 3 векторы, выделенные на 1, 4 и 5 по умолчанию (0) элементов соответственно.
Вместо этого я хотел бы создать 3 вектора размера 1, но со значениями 1, 4 и 5. Я знаю, что я мог бы использовать конструктор (n, value), как vector<int>
(1,1), (1,4) и (1,5), но для моего понимания я хотел бы понять, почему мой список инициализаций не выполняет то, что я ожидаю.
Это должно работать. Даже «foo ({1)) и т. Д. В порядке. – chris
Я получаю поведение, которого вы ожидаете. Я тестировал его на Linux, используя g ++ 4.7.3. Какую платформу вы используете? –
Я использую встроенный Android с clang 3.1. Я строю для Android 4.2.2, рука 32 бит. – user3277261