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

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...

34
Как инициализировать вектор пар C ++ 17 с необязательным элементом

В C ++ 17, как вы объявляете и инициализируете вектор пар (или кортежей) с необязательным элементом? std::vector<std::pair<int, optional<bool> > > vec1 = { {1, true}, {2, false}, {3, nullptr}}; У меня есть пара, где второй элемент может быть нулевым /...

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

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

14
Можно ли инициализировать список std :: vector с идеальной пересылкой элементов?

Я заметил , что совокупный список инициализационных ЗПП :: вектор выполняет копирование инициализации , когда движение более применимо. В то же время, несколько emplace_backs делают то, что я хочу. Я мог только придумать это несовершенное решение написания шаблонной функции init_emplace_vector....

14
Как вектор как ключ работает внутри C ++?

Этот SO-ответ говорит, что STL Map с вектором для ключа вектора может использоваться в качестве ключа. Поэтому, когда мы используем вектор в качестве ключа. Как это на самом деле работает, так как ключ должен быть уникальным, поэтому, когда мы вставляем другой вектор с такими же элементами,...

12
Инициализация вектора атомности

Рассматривать: void foo() { std::vector<std::atomic<int>> foo(10); ... } Содержимое foo теперь действительно? Или мне нужно явно выполнить цикл и инициализировать их? Я проверил на Godbolt, и, кажется, все в порядке, однако стандарт кажется очень запутанным в этом вопросе. Конструктор...

12
Нахождение наименьших собственных векторов большой разреженной матрицы, в SciPy более чем в 100 раз медленнее, чем в Octave

Я пытаюсь вычислить несколько (5-500) собственных векторов, соответствующих наименьшим собственным значениям больших симметричных квадратных разреженных матриц (до 30000x30000) с ненулевыми значениями менее 0,1%. В настоящее время я использую scipy.sparse.linalg.eigsh в режиме shift-invert (sigma =...

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

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

11
Разница между std :: resize (n) и std :: shrink_to_fit в C ++?

Я сталкивался с этими утверждениями: resize(n)- Изменяет размер контейнера так, чтобы он содержал «n» элементов. shrink_to_fit()- Уменьшает емкость контейнера до его размера и уничтожает все элементы, превышающие емкость. Есть ли существенная разница между этими функциями? они попадают под векторы...

10
Как преобразовать числовые массивы в вектор <int> & (ссылка) с помощью SWIG

Моя цель: Создайте 3 пустых массива в python (2 из них будут инициализированы с конкретными значениями), затем отправьте все три из них через swig в функцию c ++ в виде векторных ссылок (это делается для того, чтобы избежать копирования данных и потери эффективности). Оказавшись в функции c ++,...

10
Стирание () элемента в векторе не работает

У меня есть вектор. Мне нужно удалить последние 3 элемента в нем. Описал эту логику. Программа вылетает. В чем может быть ошибка? vector<float>::iterator d = X.end(); for (size_t i = 1; i < 3; i++) { if (i == 1) X.erase(d); else X.erase(d - i); }...

9
Безопасно ли для параллелизма вызывать concurrency :: concurrent_vector :: push_back при переборе этого concurrent_vector в другом потоке?

push_back , begin , end описаны как параллельный сейф в https://docs.microsoft.com/en-us/cpp/parallel/concrt/reference/concurrent-vector-class?view=vs-2019#push_back Однако приведенный ниже код утверждает. Возможно, потому что элемент добавлен, но еще не инициализирован. struct MyData { explicit...