Вопросы с тегом «stdvector»

Тип последовательности, определенный как часть стандартной библиотеки.

169
Является ли std :: vector копированием объектов с помощью push_back?

После многих исследований с использованием valgrind я пришел к выводу, что std :: vector делает копию объекта, который вы хотите push_back. Это действительно так ? Вектор не может хранить ссылку или указатель на объект без копии ?!...

159
C ++ valarray против вектора

Я очень люблю векторы. Они изящны и быстры. Но я знаю, что существует то, что называется valarray. Зачем мне использовать valarray вместо вектора? Я знаю, что у valarrays есть некоторый синтаксический сахар, но кроме этого, когда они...

146
C ++, скопировать в вектор

Мне нужно скопировать std::setв std::vector: std::set <double> input; input.insert(5); input.insert(6); std::vector <double> output; std::copy(input.begin(), input.end(), output.begin()); //Error: Vector iterator not dereferencable В чем

133
Как отсортировать вектор пар на основе второго элемента пары?

Если у меня есть вектор пар: std::vector<std::pair<int, int> > vec; Есть ли простой способ отсортировать список в порядке возрастания на основе второго элемента пары? Я знаю, что могу написать небольшой функциональный объект, который будет выполнять эту работу, но есть ли способ...

108
Эффективный способ вернуть std :: vector в c ++

Сколько данных копируется при возврате std :: vector в функцию и насколько велика будет оптимизация, чтобы разместить std :: vector в свободном хранилище (в куче) и вместо этого вернуть указатель, то есть: std::vector *f() { std::vector *result = new std::vector(); /* Insert elements into result...

97
Как перетасовать std :: vector?

Я ищу универсальный способ многоразового перетасовки std::vectorв C ++. Вот как я сейчас это делаю, но я думаю, что это не очень эффективно, потому что ему нужен промежуточный массив, и он должен знать тип элемента (DeckCard в этом примере): srand(time(NULL)); cards_.clear(); while (temp.size()...

95
vector :: at vs. vector :: operator []

Я знаю, что at()это медленнее, чем []из-за проверки границ, которая также обсуждается в подобных вопросах, таких как C ++ Vector at / [] operator speed или :: std :: vector :: at () vs operator [] << удивительные результаты !! В 5-10 раз медленнее / быстрее! . Я просто не понимаю, для чего...

88
Java в 8 раз быстрее работает с массивами, чем std :: vector в C ++. Что я сделал не так?

У меня есть следующий код Java с несколькими большими массивами, которые никогда не меняют своего размера. На моем компьютере он работает за 1100 мс. Я реализовал тот же код на C ++ и использовал std::vector. Время реализации C ++, которая запускает тот же самый код, составляет 8800 мс на моем...

84
std :: dynarray против std :: vector

C ++ 14 представляет std::dynarray: std :: dynarray - это контейнер последовательности, который инкапсулирует массивы с размером, который фиксируется при построении и не изменяется на протяжении всего времени существования объекта. std::dynarrayдолжен быть выделен во время выполнения так же, как...

71
Использование std :: vector для просмотра сырой памяти

Я использую внешнюю библиотеку, которая в какой-то момент дает мне необработанный указатель на массив целых чисел и размер. Теперь я хотел бы использовать std::vectorдля доступа и изменения этих значений на месте, а не доступ к ним с помощью необработанных указателей. Вот примерный пример, который...

46
std :: vector (ab) использует автоматическое хранение

Рассмотрим следующий фрагмент: #include <array> int main() { using huge_type = std::array<char, 20*1024*1024>; huge_type t; } Очевидно, что это приведет к сбою на большинстве платформ, поскольку размер стека по умолчанию обычно составляет менее 20 МБ. Теперь рассмотрим следующий код:...

45
Как я могу получить глубину многомерного std :: vector во время компиляции?

У меня есть функция, которая принимает многомерный std::vectorи требует, чтобы глубина (или количество измерений) передавалась как параметр шаблона. Вместо жесткого кодирования этого значения я хотел бы написать constexprфункцию, которая будет принимать std::vectorи возвращать глубину как unsigned...

31
Странное поведение с полями классов при добавлении в std :: vector

Я обнаружил очень странное поведение (на Clang и GCC) в следующей ситуации. У меня есть вектор, nodesс одним элементом, экземпляр класса Node. Затем я вызываю функцию, nodes[0]которая добавляет новый Nodeвектор. При добавлении нового узла поля вызывающего объекта сбрасываются! Однако они, похоже,...

11
Современный подход к созданию std :: vector для выравнивания памяти

Следующий вопрос связан, однако ответы на старые, и комментарий от пользователя Marc Glisse предполагает , что есть новые подходы , начиная с C ++ 17 к решению этой проблемы , которые не могут быть адекватно обсуждены. Я пытаюсь выровнять память, работающую правильно для SIMD, при этом все еще имея...