STL查找功能从Deque返回了什么
What does the stl find function return from deque
我有一个std Deque并在其中搜索元素。我的问题是,我不明白查找功能返回是什么样的形式。
std::deque< DataCellHandle > dataCellHandleArray;
std::_Deque_iterator<DataCellHandle, const DataCellHandle&, const DataCellHandle*> it =
std::find( dataCellHandleArray.cbegin(), dataCellHandleArray.cend(), releaseHandle ); // works
std::deque< DataCellHandle >::iterator itr =
std::find( dataCellHandleArray.cbegin(), dataCellHandleArray.cend(), releaseHandle ); // does not work
我期望将返回索引或迭代器。
std::find
返回与first
和last
参数相同类型的对象,在您的情况下,它是 std::deque<DataCellHandle>::const_iterator
std::find
的返回类型与您实例化此功能模板的迭代器类型相同。在您的情况下,您通过dataCellHandleArray.cbegin()
和.cend()
,即std::deque::const_iterator
类型,而不是std::deque::iterator
。因此,这是您的修复:
std::deque<DataCellHandle>::const_iterator it = ...
请注意,这可以使用:
auto it = std::find(dataCellHandleArray.cbegin(), dataCellHandleArray.cend(),
releaseHandle);
请注意,可以从iterator
构建const_iterator
,而不是逆向。
// Ok, iterator to const_iterator
std::deque<DataCellHandle>::const_iterator ci = dataCellHandleArray.begin();
// Ok, compare const_iterator and iterator:
assert(ataCellHandleArray.begin() == ataCellHandleArray.cbegin());
// Error, can't loose constness of the "pointee"
std::deque<DataCellHandle>::iterator ci = dataCellHandleArray.cbegin();
相关文章:
- 查找不存在的键时,unordered_map返回什么
- 如果我在 const 函数上使用指针,我可以返回什么?
- 使用枚举作为条件,if 条件将返回什么,真或假?
- 我应该返回什么而不是标准::shared_ptr<>&?
- 当你只使用 return 时,函数返回什么类型;在 c++ 中
- 在C++中,运算符 sizeof 返回什么数据类型?
- ActorItr 迭代器变量中有什么,* ActorItr 返回什么?
- mxGetPr 返回什么?
- 重载运算符返回什么类型的值(对于用户定义的类型):右值还是左值?
- 代码是否有效.如果我想显示第一个元素?如果不是,那么 s.begin() 会返回什么?
- 范围分辨率运算符在类型:: var的情况下返回什么
- fork_rv返回什么
- int* foo(int a)在C 中返回什么
- 当找不到请求的注册表值时,ReggetValue会返回什么
- 我们应该在带有 char *func(char *string) 的函数中返回什么?需要简要说明这与 c 中的 char
- 重载的 QAbstractItemModel::flags 应该为无效的 QModelIndex 返回什么
- 试图在每次输出后使用一个函数摆脱'0',但不确定我可以返回什么
- 查找函数在失败结果中应该返回什么
- 当c 中的矢量容器过载[]运算符时,我对未定义的索引返回什么
- 新运营商在组装中返回什么