c++ - 在不构造容器的情况下对唯一元素进行迭代

标签 c++ boost iterator std

我有一个框架,它需要一个迭代器作为输入。 但有时,我只有一个元素,因此构建容器似乎工作量太大。

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/

相关文章:

c++ - 使用C++模板的程序编译过程

c++ - 在可变参数模板中构造固定大小的数组

c++ - 将 uin32_t 写入 asio::streambuf

由于设置 `set_verify_mode(boost::asio::ssl::verify_none);` 造成的安全后果

c++ - 永不结束的 STD 库迭代器?

C++ 简单的迭代器实现

c++ - 如何在 C++ 中存储大矩阵

c++ - 将bgr转换为ycbcr并在opencv中分离 channel

c++ - 从我不加入的组收到数据包

c++ - 通过 C++ 中的标准迭代器将基类转换为派生类