【发布时间】:2017-12-11 13:47:56
【问题描述】:
我有一个实际上是std::shared_ptr< std::vector< Element > > 的容器。我将这种类型包装到 MyVector 类中,因为我不希望人们用指针把事情搞砸:
class MyVector
{
std::shared_ptr< std::vector< Element > > m_vector;
};
我希望能够将MyVector 用于基于范围的for 循环,如下所示:
int main( )
{
MyVector vector;
// ...
for( const auto& element : vector )
{
// ...
}
return 0;
}
所以现在我必须将正确的函数重定向到内部指针才能使其工作。 MyVector 必须符合哪个 C++ 概念?
我怎样才能实现当内部std::shared_ptr 是nullptr 时,MyVector 的行为与空的std::vector 完全相同(这样它就不会在基于范围的循环中崩溃,但不会进行迭代完全)?
【问题讨论】:
-
为什么会有指向向量的指针?这几乎总是错误的。它应该解决什么问题?
-
至于你的问题,你检查过吗? this range-for reference?
-
@Someprogrammerdude 它来自我正在使用的 API。什么都不知道:/
-
Range based for 不基于 C++ 概念,这是一个正在考虑标准化的提案。你是这个意思,还是只是想让它起作用?
标签: c++ c++11 for-loop c++-concepts