【发布时间】:2019-04-11 19:25:09
【问题描述】:
看起来很直接的例子,典型的 std::find 用法
for ( auto element : generic->vec() )
LOG << element;
LOG << channel;
if ( !gen->vec().empty() ) {
if(std::find(generic->vec().begin(), generic->vec().end(), channel) != generic->vec().end()){
LOG << "Found";
;// Found the item
} else {
LOG << "Not Found";
return false;
}
}
请检查日志文件
2018-11-08, 09:37:18 [INFO] - [140455150589696] - 1
2018-11-08, 09:37:18 [INFO] - [140455150589696] - 2
2018-11-08, 09:37:18 [INFO] - [140455150589696] - 4
2018-11-08, 09:37:18 [INFO] - [140455150589696] - 12
2018-11-08, 09:37:18 [INFO] - [140455150589696] - 40
2018-11-08, 09:37:18 [INFO] - [140455150589696] - Found
该向量包含 1,2,4,12,我们要测试它是否属于该向量的传入值为 40。std::find 返回 true,表示已找到。
vec() 方法返回一个 uint64_t 元素数组:
std::vector<uint64_t> vec() const {
return vec_;
}
当我创建一个局部向量时,即
auto tmp = generic->vec(),
代码有效。
我的代码中的错误在哪里?在检查 40 是否属于 [1,2,4,12] 时,我希望得到“未找到”。
【问题讨论】:
-
auto tmp = generic->vec();是一个很好的解决方案