在自定义类的自定义find()
方法返回自定义数据结构中元素的索引位置的情况下,是否有比返回string::npos
更优雅的东西?
find()
方法的返回类型为size_t
。所以我需要它的类型是size_t。
string::npos
是-1
,这是unsigned long long
的最大值。虽然这很有用,但我的问题是命名:string
。我不想与string
有任何关联。是否存在通常以这种常见和一般方案命名并与size_t
兼容的内容?
答案 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
}