我将std::vector
连接到需要知道字节大小的C程序。
我可以在没有sizeof(vec[0])
表达式的情况下执行此操作吗?
void *dest = get_dest();
std::vector<T> vec;
memcpy(dest, vec.data(), vec.size() * sizeof(vec[0]));
请不要为memcpy
提供C ++风格的替代方案。
答案 0 :(得分:2)
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
。