设计模式 - c++自己编写的查找函数如果查找不到应该返回什么?
迷茫
迷茫 2017-04-17 13:31:07

比如自己写了一个User类,有一个函数是查找User并返回查找到的User类,但如果这个函数查找不到应该怎么处理,java可以返回null,但是cpp不能进行这样的类型转换。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

reply all(2)
左手右手慢动作
  1. 如果函数返回值是指针,则可以返回nullptr

  2. 如果函数返回值是引用,则可以在查找函数内生成一个static对象,然后凡是查找不到就返回这个对象的引用。

    class User;
    class UserList;
    User &find(UserList &ul) {
      static const User user;
      // ...
    
      return user;
    }
    
  3. 通常,对于这种情况不会采用上述两种办法,因为往往在设计UserList类的时候会设计相应的迭代器(iterator),这样函数的返回值就是迭代器。而迭代器是存在指向 one-past-last 元素的,即查找不到的情况。例如对于vector类:

    vector vi;
    vi.end();  // one-past-last iterator

    而相应的查找函数为:

    vector::iterator find(vector &vi);
    
    auto it = find(vi);
    if (it != vi.end()) {
      /* ... */
    } 
Latest downloads
More>
web effects
Website source code
Website materials
Front end template
About us Disclaimer Sitemap
PHP Chinese website:Public welfare online PHP training,Help PHP learners grow quickly!