私はしばらくの間C++を書いています(長い間java / C)、私が次のことをするのを助けることができる私が知らないトリックがあるかどうか疑問に思います。
vector<unsigned char> *fromArray(unsigned char data[], int length)
{
vector<unsigned char> *ret = new vector<unsigned char >();
while (length--)
{
ret->push_back(*data);
}
return ret;
}
そして、あなたはそれを次のように使うことができます:
unsigned char tmp[] = {0, 1, 2, 3, 4, 5};
vector<unsigned char> *a = fromArray(tmp, sizeof(tmp));
// use `a' here
かなり面倒だと思います。すべてを1行で書きたいと思います。
vector<unsigned char> *a = fromArray({0, 1, 2, 3, 4, 5});
// use `a' here
そのようなことは可能ですか?残念ながら、C ++ 11にアクセスできません(そのinitializer_listがまさに私が望むもののようです)。
編集
申し訳ありませんが、ここでいくつかの基本が間違っていました。std::vectorの拡張は避けます。しかし、私の例が悪い例だったというだけで、質問はまだ有効だと思います。
**潜在的な回避策**
オーバーロードされた関数の束を定義して、さまざまな数の引数を取ることができます。
vector<unsigned char> *fromArray(unsigned char a)
{
vector<unsigned char> *ret = new vector<unsigned char >();
ret->push_back(a);
return ret;
}
vector<unsigned char> *fromArray(unsigned char a, unsigned char b)
{
vector<unsigned char> *ret = new vector<unsigned char >();
ret->push_back(a);
ret->push_back(b);
return ret;
}
しかし、私は気にしないと思います...