我一直在编写C++一段时间(Java/C很长一段时间),我想知道是否有一个技巧,我不'知道哪些可以帮助我做到以下几点。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;
}
但我不认为我会打扰.. 。
'std :: vector'有什么问题? – us2012 2013-02-11 22:45:22
在实际代码中没有任何东西:)这个类扩展了std :: vector,增加了打印方法和构造 – 2013-02-11 22:46:45
“打印方法”的便捷函数听起来不像扩展vector类的工作,更像是你应该使用非 - 成员的功能。 – us2012 2013-02-11 22:48:22