Я связываю std::vector
с программой на C, которая должна знать размер в байтах.
Могу ли я сделать это без выражения sizeof(vec[0])
?
void *dest = get_dest();
std::vector<T> vec;
memcpy(dest, vec.data(), vec.size() * sizeof(vec[0]));
Пожалуйста, не предлагайте альтернативы типа C++ для memcpy
.
template<class T, class A>
std::size_t bytes_in_vector( std::vector<T,A>const& v ){
return v.size()*sizeof(T);
}
template<class A>
std::size_t bytes_in_vector( std::vector<bool,A> const& )=delete;
однако, с sizeof(vec[0])
мало что происходит, если T
не является bool
. Если T
является bool
вам не разрешается использовать memcpy
.
sizeof(T)
я думаю?