c++ - 如果没有找到 map 元素会返回什么?

标签 c++ stl dictionary vector

我的 C++ header 有一些代码片段,如下所示:

private:
    std::map<std::string, std::vector<std::vector<unsigned short> > > m_usIRDataPool;

public:
    std::vector<std::vector<unsigned short> >& IRChannelData(std::string sChannelName);

在其实现文件 (.cpp) 中,IRChannelData() 具有以下定义:

std::vector<std::vector<unsigned short> >& MyClass::IRChannelData(std::string sChannelName)
{   
    std::map<std::string, std::vector<std::vector<unsigned short> > >::iterator it = m_usIRDataPool.find( sChannelName );

    if ( it != m_usIRDataPool.end() )
    {  
       return it->second;
    }

  //  return ????; // How can I return?
}

那么,如果在 m_usIRDataPool map 容器中找不到要删除的条目( vector 的 vector ),将返回什么

warning C4715: 'MyClass::IRChannelData' : not all control paths return a value.

最佳答案

  • 返回一个指示成功/失败的 bool 并通过“out”语义参数返回结果 vector 的地址,或者
  • 如果在 map 中找不到元素,则抛出异常

关于c++ - 如果没有找到 map 元素会返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8208114/

相关文章:

c++ - 迭代器操作问题

python 3 : nested dictionary with multiple keys from csv

c++ - 通过 make_shared 用 shared_ptr 包装动态数组

c++ - 从闭源库中检索静态指针,不由公共(public)接口(interface)公开

c++ - 如何确保 std::vector 分配的内存在解除分配后返回给操作系统?

python-3.x - 在 Python 中规范化嵌套列表时出错

python - 将 dict 的 pandas dataframe 列扩展为 dataframe 列

c++ - 运行 g++ 时需要使用 -o 吗?

c++ - 三重检查锁定?

c++ - 用于搜索和排序的最佳容器