比方说,我有一个unsigned char
缓冲区,看起来像这样:有效的方式来重新组织数据到缓冲区中,C++
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
做些什么?
谢谢!
你能想出一种方法,你可以检查每个元素,看它是'A'还是'B'*没有循环*至少*一次*? [copy_if](http://en.cppreference.com/w/cpp/algorithm/copy)可以正确配置比较器,但它仍然是一个循环。 (并且*都不是有效的C++;它们都是发送到一个类型为'unsigned char'的单个缩放器变量的初始化器列表)。 – WhozCraig 2013-04-27 00:35:51
你的意思是'buffer []'和'buffer2 []',对吧? – billz 2013-04-27 00:36:27
你想用memcpy跳过每个第三个字节的一些技巧?嘿嘿。你必须自己写。 – David 2013-04-27 00:38:43