我一直在写 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
我觉得这很麻烦 - 我想把它全部写在一行上
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;
}
但我想我不会打扰...