我正在将 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++ 风格替代品。
最佳答案
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;
但是,只要 T
不是 bool
,sizeof(vec[0])
就没什么问题。如果 T
是 bool
,则不允许使用 memcpy
。
关于c++ - std::vector 使用的字节大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26899790/