Я хотел бы сохранить 2-мерный массив, используя vector<float*>
. float*
будет назначен функцией fread
. Но он не может получить размер float
внутри, за исключением использования vector<vector<float>>
. Я не хочу использовать vector<vector<float>>
, потому что ему нужно преобразовать из массива в vector
. Итак, любые другие лучшие методы?Как получить размер массива при использовании вектора <float*>
ответ
Поскольку вы не хотите использовать vector<vector<float>>
, один из вариантов - создать свой собственный тип данных.
struct MyArray
{
std::vector<float*> array;
size_t cols;
};
Это предполагает, что не берет на себя ответственность за выделения и освобождения памяти о float*
с.
array.size()
равно числу строк и предполагается, что каждый элемент array
провести cols
количество float
с.
Зачем изобретать вектор, в несколько искалеченной форме? –
Использование vector<vector<float>>
. Одним из требований вектора является то, что элементы хранятся условно. Упомянутый более формально (от http://en.cppreference.com/w/cpp/container/vector):
Элементы хранятся смежно, что означает, что элементы могут быть доступны не только через итераторы, но и с помощью коррекций на регулярных указателей на элементы. Это означает, что указатель на элемент вектора может быть передан любой функции, которая ожидает указатель на элемент массива.
Это означает, что вы можете сделать что-то вроде этого:
vector<float> x{1.0, 2.0};
float *x1 = &x[0];
Мой хрустальный шар говорит мне, что OP хочет сделать 'std :: fread (x.data(), sizeof (float), n, fp)', что прекрасно, если 'x.size()> = n' , – 5gon12eder
@ 5gon12eder Хороший звонок. –
- 1. Как назначить размер вектора размеру массива C++?
- 2. Поиск индекса при использовании вектора <> :: итератор
- 3. Как назначить размер вектора < list <int>>?
- 4. Максимальный размер MongoDB массива при использовании $ addToSet
- 5. Как получить размер массива?
- 6. Как получить размер массива
- 7. Как получить размер массива?
- 8. Размер вектора вектора C++
- 9. избежать утечки памяти при использовании вектора <Mat>
- 10. Ошибка: правый операнд <= имеет неправильный тип при использовании вектора
- 11. переполнение стека при использовании вектора
- 12. Снижение производительности при использовании вектора C++ вместо массива C
- 13. Как рассчитать размер вектора
- 14. Размер массива, генерируемого <>?
- 15. Как получить размер этого массива?
- 16. Как получить размер массива внутри функции?
- 17. Изменение размера массива вектора
- 18. сбой при использовании вектора stl вместо оператора []
- 19. Размер вектора в C++
- 20. Получить размер общего массива
- 21. Синтаксическая ошибка при использовании <<, но не при использовании + =
- 22. Зачем устанавливать размер вектора
- 23. Можете ли вы использовать размер вектора как длину массива?
- 24. Ошибка при использовании массива как элемента массива
- 25. Как получить размер аргумента шаблона при использовании CRTP?
- 26. Как я могу получить размер коробки при использовании Zurb Foundation?
- 27. Как получить размер базового потока при использовании count и limit?
- 28. Как получить заполненный загруженный размер при использовании .net WeClient DownloadFileAsync
- 29. Как получить размер компонента при использовании макета для моего фрейма?
- 30. Почему я могу задать размер массива, равный (неизвестному) размеру вектора?
«.Я не хочу использовать вектор <вектор < float >>, потому что нужно конвертировать из массива в векторе.» - Можете ли вы подробнее рассказать о последней части? –