在c++中重组缓冲区中数据的有效方法
Efficient way to reorganize data in a buffer in C++
假设我有一个unsigned char
缓冲区,它看起来像这样:
unsigned char buffer = {'A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C'}
基本上我只想把A和B放在一个新的缓冲区中,像这样:
unsigned char buffer2 = {'A', 'B', 'A', 'B', 'A', 'B' ... etc
除了循环遍历每个元素之外,是否有更有效的方法来做到这一点?对于memcpy
或memset
有什么技巧可以做吗?
谢谢!
我从来没有使用过memcpy,但是我想这样做:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
class Modulo3
{
public:
Modulo3();
bool operator()(const char c);
private:
int num_;
};
Modulo3::Modulo3()
{
num_ = 0;
}
bool Modulo3::operator()(const char c)
{
return num_++ % 3 == 0;
}
int main()
{
string test = "ABCABCABC";
Modulo3 func;
remove_if(test.begin(),test.end(),func);
return 0;
}
对于vector、list等,代码是相同的
如果你的数据排序的方式在例子中,你可以只是循环递增3和复制前两个字节。否则你不需要对每个值都进行循环。
相关文章:
- 有哪些有效的方法可以消除一组 100 万个字符串>重复数据?
- 一种有效的数据结构,用于按 ID 访问和查找加权随机项
- 在C++事务之间存储大量字符数据的有效方法
- 有效地将数据加载到 std::vector 中<char>
- 用于随机数据访问的最有效文件类型
- 错误 - 自定义数据类型作为有效负载,带有提升::几何
- 一种将 Dart 中的字节数据转换为 C++ 中的无符号字符*的有效方法?
- C++,在对象内分配多个数据时,堆栈分配是否更有效? 在下面的程序中,类A_Heap的效率会更低吗?
- 如何有效地实现将向量的数据分配给多个变量?
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 有没有办法有效地更新QML中的CAN数据?
- 张量(多维数组)是树前瞻数据的有效存储类型吗?
- 缓存和访问数据库数据的有效方法?
- 如何有效地读取和存储 1GB 文本文件中的数据
- 在使用 0MQ 异步接收时异步发送数据的最有效方法是什么?
- 存储大量会话的最有效数据结构是什么?
- 在英特尔 CPU 上将最近的 8 个顶点插值到随机采样点时,对称 3D 网格的最有效数据布局
- 基数树(Patricia Trie)是手机通讯录的有效数据结构吗?
- 用于查找包含数字的非重叠范围的有效数据结构
- c++检查cin是否有效数据不工作