c++ - 用于替换 vector 中字节范围的标准函数

标签 c++ stdvector

我有一个字节 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/

相关文章:

c++ - 使用 lambda 表达式作为 std::set 的比较,当它在 vector 中时

c++ - vector 超出范围而不给出错误

Python 缓冲区复制速度 - 为什么数组比字符串慢?

c++ - 是否可以在具有相同图像的多个设备上生成重复的 UUID(GUID)?

c++ - 网络多线程

c++ - std::string operator[] 如何返回引用而不是字符?

c++ - 服务器关闭时客户端上的 boost asio 写入操作被阻止

c++ - std::move(const shared_ptr 引用) 是什么意思?

c++ - 向 vector 的所有元素添加一个 int

c++ - 范围基数并插入 vector C++11