Как может я обнаруживать размер/длину (в байтах) станд.:: вектор?

У меня есть вектор, и я хочу написать и прочитать его к файлу, но не возможно определить логический размер вектора, используя sizeof оператор.

Таким образом, что я сделаю?

21
nl ja de
- 1 для того, чтобы не прочитать документацию.
добавлено автор Lightness Races in Orbit, источник
That' s, почему у них есть размер функция. Проходя все элементы, тем не менее, iterators - более естественный выбор, чем необходимость знать размер.
добавлено автор chris, источник
и &vector.front() даст вам подсказку к памяти, так, чтобы вы могли mmap файл и memcpy данные
добавлено автор bobah, источник
Как написать, что это к файлу зависит от типа элементов - сначала необходимо знать, могут ли (и как) они быть написаны файлу.
добавлено автор Steve Jessop, источник

1 ответы

Станд. C++:: у вектора есть метод размер() , который возвращает его размер.

Править: поскольку я получаю его теперь, необходимо вычислить память, которую использует данный вектор. Вы не можете использовать sizeof для этого, поскольку вектор использует динамическую память и хранит только указатель динамического массива, содержащего его элементы. Таким образом, мое лучшее предложение должно было бы умножить память, которой каждый элемент требует числом элементов. Обратите внимание, что это снова не будет работать, если объекты сохранят указатель на некоторые динамично ассигнованные объекты - необходимо будет снова вычислить их размеры отдельно.

Нет никакого легкого способа вычислить память векторный размер в байтах в C++, о котором я знаю.

37
добавлено
Вы хотите иметь размеры , емкость памяти этот вектор требует?
добавлено автор Ivaylo Strandjev, источник
смотрите на мой отредактированный ответ
добавлено автор Ivaylo Strandjev, источник
эй мой вектор более сложен, чтобы получить просто размер его, потому что это сделано из объекта, который это сделало из некоторых векторов и некоторой последовательности и lot' s другой вещи, что у них есть та же самая ситуация, я хочу что-то как memcopy
добавлено автор Vahid Haratian, источник
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest