我正在设计一个 C++ 接口,它允许用户迭代从文件解码的对象。这个解码过程有点慢。
我正在为此考虑一个迭代器接口,但我想避免任何不必要的复制,所以我正在考虑(用户方面):
for (const auto& object : file) {
// you can access the members of `object` here
std::cout << object.whatever() << std::endl;
// you can copy `object` here
myObjectCopy = object;
// you CANNOT do this because `object` changes
// as soon as the iterator advances
myObjectPtr = &object;
}
object
在前面的用法示例中是对迭代器实例内部对象的引用。
这是错的吗?您会在这里建议哪些其他惯用接口?
我想到了一个流接口(想想std::istream
),但是 AFAIK,读取数据的方法也返回副本(它们提取字符)。