-1

次のよう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

すべての単一要素をループする以外に、これを行う効率的な方法はありますか? またはでできるトリックはありますmemcpymemset

ありがとう!

4

2 に答える 2

0

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;
}

ベクトル、リストなどのコードは同じです。

于 2013-04-27T01:06:36.907 に答える