有没有一种快速(使用CPU)将char
数组转换为std::vector<char>
的方法?
我的函数如下:
void someFunction(char* data, int size)
{
// Now here I need to make the std::vector<char>
// using the data and size.
}
在这里你不能对任何东西进行“转换”,但你可以轻松地从C字符串构建一个向量:
std::vector<char> v(data, data + size);
这会创建一个副本。
std::vector
的emplace_back()
成员函数),但在您的示例中,元素是char
对象,因此仍然会复制每个size
char
对象。std::vector
视为指向数组的指针和数组长度的包装器。将"将char *
强制转换为std::vector<char>
"最接近的等效方法是使用给定的指针和长度交换向量的指针和长度,但是长度如何指定不确定(两种可能性是指向超出末尾元素的指针或size_t
值)。没有标准的std::vector
成员函数可用于交换其内部数据和给定的指针和长度。std::vector
成员函数不是一个好主意。如果您真的需要从 data
和 size
构造一个 std::vector<char>
,您应该使用以下方式构造一个:std::vector<char> vec(data, data + size);