c++ - std::vector 使用的字节大小

标签 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++ 风格替代品。

最佳答案

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 不是 boolsizeof(vec[0]) 就没什么问题。如果 Tbool,则不允许使用 memcpy

关于c++ - std::vector 使用的字节大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26899790/

相关文章:

c++ - 理解Visual C++的rand()函数的算法

c++ - Getter 返回错误值

C++ 不能使用另一个文件中的类

c++ - 返回多态类

c++ - 在 C++ 中使用函数作为运算符重载

c++ - 为什么调用不接受带参数的函数的函数在 C 中编译但在 C++ 中不编译

c++ - 如何递归删除目录?

c++ - 有没有办法在 gdb 中自动查找方法属于哪个 c++ 命名空间?

c++ - Error 21 error LNK2019 : unresolved external symbol:. ...在函数:.中引用...

C++ 函数 ‘WINBOOL GetProcessIoCounters(HANDLE, PIO_COUNTERS)’ 的参数太少