【发布时间】:2019-12-18 07:50:32
【问题描述】:
假设我有一个std::vector,它的内容是std::strings 和{"a","b","c"}。如果我要执行std::find() 寻找"a",它会在迭代"a" 时停止(即短路)还是继续到最后?
std::vector<std::string> vec;
vec.insert(vec.begin(), "a");
vec.insert(vec.begin(), "b");
vec.insert(vec.begin(), "c");
哪个更快?
std::find(vec.begin(), vec.end(), "a");
std::find(vec.begin(), vec.end(), "c");
【问题讨论】:
-
是的,为什么不呢? en.cppreference.com/w/cpp/algorithm/find
-
即使理论上一个实现确实持续到最后,谁会使用它?它会被自然淘汰。
-
从复杂性要求中没有要求在第一次出现时停止。但典型的实现方式如图所示。