string :: npos的替代品

时间:2018-03-11 02:24:27

标签: c++ c++11 c++14

在自定义类的自定义find()方法返回自定义数据结构中元素的索引位置的情况下,是否有比返回string::npos更优雅的东西?

find()方法的返回类型为size_t。所以我需要它的类型是size_t。

string::npos-1,这是unsigned long long的最大值。虽然这很有用,但我的问题是命名:string。我不想与string有任何关联。是否存在通常以这种常见和一般方案命名并与size_t兼容的内容?

1 个答案:

答案 0 :(得分:0)

如果您的自定义类想要从它的find函数返回size_t,那么只需定义您自己的size_t常量,供消费者引用为" not found"。例如(伪代码,未验证编译):

class Foo
{
    public:
        static const size_t npos = static_cast<size_t>(-1);

        size_t find(/*thing to find here*/) const
        {
            // logic to search for element

            // element not found
            return(npos);
        }
};

然后消费者可以像使用std :: string:

一样使用它
Foo foo;
size_t pos = foo.find(/*thing to find here*/);
if(pos != Foo::npos)
{
    // Element found
}