我有一个字节 vector (std::vector): [1,1,1,9,9,9,1,1,1]
我想用未知长度的字节替换字节 3-6(我会在运行时知道。)。 因此 vector 的长度可能会增长、偏移或保持不变。 但是我知道我要替换的字节的起点和终点。
我可以使用删除或插入来调整大小,然后将新数据循环到旧数据上。
std::replace 进行搜索并替换匹配的字节,而我知道我想替换哪些字节。而 std::replace 似乎只替换一个元素。我想用数据 block 替换。
肯定有一个 std 函数可以“巧妙地”做到这一点? (如果我愿意,我会叫你 Shirely)。
最佳答案
如果所有值都相同并且您知道要替换的区间在 vector 内,请使用 std::fill
:
std::fill(v.begin() + 3, v.begin() + 6, 9);
此行会将 vector v
上的元素 3-6 替换为值 9。
如果您要放置的值不完全相同,请改用 std::copy
(您需要确保替换适合 vector ):
std::copy(replacement.begin(), replacement.end(), v.begin() + 3);
这将从位置 3 开始的 vector v
的内容替换为 replacement
的内容。
如果不确定 vector 的大小,可以先修正大小:
v.resize(6);
关于c++ - 用于替换 vector 中字节范围的标准函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42762946/