std :: vector使用的字节大小

时间:2014-11-13 01:23:59

标签: c++

我将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 ++风格的替代方案。

1 个答案:

答案 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])不是Tbool就没有错。如果Tbool,则不允许您使用memcpy