vector <unsigned char> vs二进制数据的字符串

kal*_*axy 24 c++ string stl vector binary-data

哪个是用于保存和访问二进制数据的更好的c ++容器?

std::vector<unsigned char>
Run Code Online (Sandbox Code Playgroud)

要么

std::string
Run Code Online (Sandbox Code Playgroud)

一个比另一个更有效吗?
一个更"正确"的用法吗?

Dav*_*eas 27

你应该更喜欢std::vectorstd::string.在通常情况下,两种解决方案几乎都是等效的,但是std::strings专门设计用于字符串和字符串操作,这不是您的预期用途.


fni*_*eto 13

两者都是正确的,同样有效.使用其中一个而不是普通数组只是为了简化内存管理并将它们作为参数传递.

我使用vector是因为意图比使用string更清晰.

编辑: C++ 03标准不保证std::basic_string内存连续性.然而,从实践的角度来看,没有商业非连续的实现.C++ 0x设置为标准化该事实.