Добавление чего-либо к вектору можно сделать с помощью функции-члена insert()
:
vec.insert(vec.end(), arr, arr+len);
Конечно, есть также assign()
, который, вероятно, ближе к тому, что вы хотите сделать:
vec.assign(arr, arr+len);
Однако, читая ваш вопрос, я удивлялся, почему вы сначала читаете в массив C, чтобы просто скопировать его содержимое в вектор, когда вы можете сразу прочитать в вектор. std::vector<>
требуется для хранения своих данных в одном непрерывном блоке памяти, и вы можете получить доступ к этому блоку, взяв адрес его первого элемента. Просто убедитесь, что у вас достаточно места в векторе:
std::size_t my_read(char* buffer, std::size_t buffer_size);
vec.resize( appropriate_length );
vec.resize( my_read_func(&vec[0], vec.size()) );
Вместо &vec[0]
вы также можете получить адрес первого элемента по &*vec.begin()
. Тем не менее, обратите внимание, что при любом из этих методов вы абсолютно должны убедиться, что есть хотя бы один элемент в векторе . Ни один из этих двух методов не требуется для его проверки (хотя ваша реализация может сделать это для отладочных сборок), и оба будут вызывать страшное неопределенное поведение , если вы потерпите неудачу на этом.