有效地将数据加载到 std::vector 中<char>
Load data into std::vector<char> efficiently
我的理解是,您可以使用指针访问std::vector中的数据。例如:
char *ptr;
std::vector<char> v1 {'A', 'B', 'C'};
ptr = &v1[0]
if (*(ptr+1) == 'B')
std::cout << "Addressing via pointer worksn";
直接加载一个 std::vector 怎么样?例如:
std::vector<char> v2;
v2.reserve(3); // allocate memory in the vector
ptr = &v2[0]
*ptr = 'A';
*(ptr+1) = 'B';
*(ptr+2) = 'C';
if (v2[1] == 'B')
std::cout << "Data is in vector buffer!n";
但
if (!v2.size())
std::cout << "But the vector doesn't know about it!n";
我的问题:有没有办法告诉 v2 向量其内部内存缓冲区加载了数据?当您想要使用 std::vector 来保存来自文件流的数据时,这将非常有用。
我期待你的评论。
有没有办法告诉 v2 向量其内部内存缓冲区加载了数据?
不。
第二个示例的行为未定义。
当您想要使用 std::vector 来保存来自文件流的数据时,这将非常有用。
你可以像这样将文件读入矢量:
std::vector<char> v3(count);
ifs.read(v3.data(), count);
或者像这样:
using It = std::istreambuf_iterator<char>;
std::vector<char> v4(It{ifs}, It{});