我有一个框架,它需要一个迭代器作为输入。 但有时,我只有一个元素,因此构建容器似乎工作量太大。
T obj; // my unique object
std::vector<T> vec; // I want to avoid this
vec.push_back(T);
// Because the only use of the container is for this call
call(std::begin(vec), std::end(vec));
// I want to do something like that
call(BeginFakeSingletonIt<T>(obj), EndFakeSingletonIt<T>());
我可以创建一种特殊类型的迭代器,但标准库或 boost 中不存在类似的东西吗?
最佳答案
可以将单个元素视为大小为 1 的数组。因此,如果我们使用它,那么指向对象的指针将是指向数组开头的指针(迭代器),而指向过去的指针则数组的结尾将只是该指针递增一次。所以你能做的就是使用
call(&object, &object + 1)
现在您将只处理单个对象。
关于c++ - 在不构造容器的情况下对唯一元素进行迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43279325/