Ver*_*gon 6 c++ initializer-list c++11
我正在尝试并尝试创建一个接受两个列表的函数:一个浮点列表,一个整数列表.我的第一个方法是:
template<typename FloatIterator, typename IntIterator>
Thing *createThing(
FloatIterator floatsBegin,
FloatIterator floatsEnd,
IntIterator intsBegin,
IntIterator intsEnd
) {
...
}
Run Code Online (Sandbox Code Playgroud)
这适用于各种容器,甚至是普通的指针.但是,我无法轻松传入std :: initializer_list.例如,我希望能够像这样调用函数:
Thing *thing = createThing({ 3.0, 4.0, 5.0 }, { 0, 1, 2, 2, 3, 0 });
Run Code Online (Sandbox Code Playgroud)
所以我在想,我会尝试这样的事情:
template<typename FloatContainer, typename IntContainer>
Thing *createThing(const FloatContainer &floats, const IntContainer &ints) {
for (float f : floats) { ... }
for (int i : ints) { ... }
}
Run Code Online (Sandbox Code Playgroud)
这适用于stl容器和initializer_lists,但它不再适用于简单的指针.我不能再这样做了:
int numFloats;
float *floats = readFloatsFromFile(&numFloats, "myfloats.txt");
int numInts;
int *ints = readIntsFromFile(&numInts, "myints.txt");
Thing *thing = createThing(floats, floats + numFloats, ints, ints + numInts);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:有没有办法编写一个可以接受所有三种输入的函数?(指针,stl容器和initializer_lists)
谢谢!
Boost迭代器范围将允许您用开始/结束对来装饰一对迭代器(前向范围概念):
| 归档时间: |
|
| 查看次数: |
180 次 |
| 最近记录: |