Jav*_*Dev 0 c++ return vector return-value
我做了一些最少的代码
vector<int> items = {1, 2, 5, 0, 7};
int& getAtSafe(unsigned n) {
if (n < items.size() && items[n] != 5) return items[n];
else // ???
}
Run Code Online (Sandbox Code Playgroud)
但是,当我们找不到所需的项目时,如何返回空值呢?
PS原始任务正在搜索属性等于的项目。
不接受异常变体。我不需要暂停程序。
例如,用户输入索引,并且每次输入错误时,用户都会获得“输入错误”
如果函数检查索引,则在这种情况下的一般方法是引发异常 std::out_of_range.
考虑到at类模板中已经存在成员函数std::vector。
如果您可能不使用异常并且任务是
PS原始任务正在搜索属性等于的项目。
那么您可以使用std::find_if返回迭代器的标准算法,也可以编写自己的函数以返回与搜索到的元素对应的索引。如果没有这样的元素,则返回向量的大小,例如
#include <iostream>
#include <vector>
template <typename Predicate>
std::vector<int>::size_type find_if( const std::vector<int> &v, Predicate predicate )
{
std::vector<int>::size_type i = 0;
while ( i != v.size() && !predicate( v[i] ) ) ++i;
return i;
}
int main()
{
std::vector<int> items = {1, 2, 5, 0, 7};
auto i = ::find_if( items, []( const auto &item ) { return item % 2 == 0; } );
if ( i != items.size() ) std::cout << items[i] << '\n';
return 0;
}
Run Code Online (Sandbox Code Playgroud)