我有一个包含一个向量类:将可变大小元素列表添加到向量的语法糖?
class Foo {
typdef std::vector<int> Vec;
Vec m_kids;
void addKids(Vec::const_iterator begin,
Vec::const_iterator end) {
m_kids.insert(m_kids.end(), begin, end);
}
};
有没有什么办法可以让下面简洁的函数调用? (也许通过改变上述addKids
功能?)
int main() {
Foo foo;
foo.addKids(23,51,681); // these...
foo.addKids(3,6,1,4,88,2,4,-2,101); // ...would be nice?!
}
我怀疑你可以用的C++ 0x矢量初始化列表办呢?但不幸的是,我不能使用C++ 0x。如果有帮助,我可以使用Boost。
这很聪明!重载'operator,'只是为了与我想要的语法兼容?正如你写的那样,'foo << 3 << 6 ...'会起作用,对吧? – carlpett
@carlpett:是的。 – Nawaz
+1这是'boost :: assign'库中的一种方法,我不喜欢它,但仅仅是品味问题(它是我不喜欢的'operator'的重载)。或者,C++的CORBA映射为'类似的目的使用'operator = <<'的重载,就像'<<'一样丑陋(如果不是更多),但不太可能与插入到流中混淆。 –