std::find和std::string::find是C++标准库中常用的两个函数,用于在容器和字符串中查找特定元素或子字符串。它们的主要区别在于它们所作用的类型不同。
std::find,通用算法函数可以用于任何容器的查找。
函数签名如下
template<class InputIt, class T>
constexpr InputIt find(InputIt first, InputIt last, const T& value)
{
for (; first != last; ++first)
if (*first == value)
return first;
return last;
}
first和last是输入的起始和结尾的迭代器,在这个范围内查找。value就是要查找的内容。
找到了就会返回指向该元素的迭代器,找不到就返回末尾迭代器。
例如
在std::vector<int> vec中查找6
std::vector<int> vec = {1,2,2,3,4,5,6};
auto pos = std::find(vec.begin(),vec.end(),6);
if(pos != vec.end())
{
std::cout << "find it" << std::endl;
}
else{
std::cout << "not find" << std::endl;
}
注意vec.end()是指向vec末尾的下一个位置,也就是6的下一个位置哦。
std::string::find是std::string类的成员函数,用于在字符串中查找子字符串。
函数签名如下
size_t find(const std::string& str, size_t pos = 0) const noexcept;
str要查找的子串,pos从哪里开始,默认为0.从指定位置开始查找第一个等于str的子字符串,如果找到返回该子字符串的起始位置,找不到返回std::string::npos.
例如,在字符串中查找dog文章来源:https://www.toymoban.com/news/detail-523483.html
std::string str = "i have a black dog";
auto pos = str.find("dog");
if(pos != std::string::npos)
{
std::cout << "find it" << std::endl;
}
else
{
std::cout << "not find" << std::endl;
}
总之,std::find,最好拿来查找任意元素。std::string::find,最好拿来查找子字符串。文章来源地址https://www.toymoban.com/news/detail-523483.html
到了这里,关于std::find和std::string::find的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!