您现在的位置:首页 > 教案格式 > 正文

search容器中第一个{11,1,2』语法格式

2022-09-02 07:02 网络整理 教案网

C++ search()函数用法详解(深入理解,一字社会)

1 search() 语法格式

与 find_end() 一样,search() 函数也提供以下两种语法格式:

//查找 [first1, last1) 范围内第一个 [first2, last2) 子序列
ForwardIterator search (ForwardIterator first1, ForwardIterator last1,
                        ForwardIterator first2, ForwardIterator last2);
//查找 [first1, last1) 范围内,和 [first2, last2) 序列满足 pred 规则的第一个子序列
ForwardIterator search (ForwardIterator first1, ForwardIterator last1,
                        ForwardIterator first2, ForwardIterator last2,
                        BinaryPredicate pred);

其中,各个参数的含义为:

其实第一种语法格式也可以看成是包含了一个默认的pred参数,它指定了一个相等规则一次函数教案格式,即查找范围内[first1,last1)和[first2,last<@中的每个元素2) 对应相等的子序列;并且借助第二种语法格式,我们可以自定义当前场景所需的匹配规则。

同时一次函数教案格式,search() 函数将返回一个前向迭代器。当函数搜索成功时,迭代器指向找到的子序列中的第一个元素;否则,如果搜索失败,则迭代器指向的 last1 迭代器是相同的。

2 搜索()示例

#include      // std::cout
#include     // std::search
#include        // std::vector
using namespace std;
//以普通函数的形式定义一个匹配规则
bool mycomp1(int i, int j) {
    return (i % j == 0);
}
//以函数对象的形式定义一个匹配规则
class mycomp2 {
public:
    bool operator()(const int& i, const int& j) {
        return (i % j == 0);
    }
};
int main() {
    vector myvector{ 1,2,3,4,8,12,18,12,18,1,2,3 };
    int myarr[] = { 12,18,1 };
    
    //调用第一种语法格式
    vector::iterator it = search(myvector.begin(), myvector.end(), myarr, myarr+3);
    if (it != myvector.end()) {
        cout << "第一个{12,18,1}的起始位置为:" << it - myvector.begin() << "  ,*it = " << *it << endl;
    }
    int myarr2[] = { 18,1,2 };
    //调用第二种语法格式
    it = search(myvector.begin(), myvector.end(), myarr2, myarr2 + 3, mycomp2());
    if (it != myvector.end()) {
        cout << "第一个{18,1,2}的起始位置为:" << it - myvector.begin() << "  ,*it = " << *it;
    }
    return 0;
}

vlook函数对格式要求_一次函数教案格式_表格式教案卡片式教案

2.1 第一种语法格式

下面是两个例子:

示例1:从程序的执行结果可以看出search()函数在myvector容器中找到了第一个{1,2,6},起始位置下标为9,可以被myvector容器下标9、@ >10、11 找到对应的1,2,6。

例2:从程序的执行结果可以看出search()函数在myvector容器中找到了第一个{11,1,2},起始位置下标为8,可以通过myvector下标容器 8、@ >9、@>10 找到对应的 11,1,2。

示例 3:如果没有找到则不返回

#include      // std::cout
#include     // std::search
#include        // std::vector
using namespace std;
int main() {
    vector myvector{ 1,2,3,4,8,12,18,12,18,1,2,6 };
    int myarr[] = { 1,2,6 };
    
    //调用第一种语法格式
    vector::iterator it = search(myvector.begin(), myvector.end(), myarr, myarr+3);
    if (it != myvector.end()) {
        cout << "第一个{1,2,6}的起始位置为:" << it - myvector.begin() << "  ,*it = " << *it << endl;
    }
    return 0;
}

表格式教案卡片式教案_vlook函数对格式要求_一次函数教案格式

#include      // std::cout
#include     // std::search
#include        // std::vector
using namespace std;
int main() {
    vector myvector{ 1,2,3,4,8,12,18,12,11,1,2,6 };
    int myarr[] = { 11,1,2 };
    
    //调用第一种语法格式
    vector::iterator it = search(myvector.begin(), myvector.end(), myarr, myarr+3);
    if (it != myvector.end()) {
        cout << "第一个{11,1,2}的起始位置为:" << it - myvector.begin() << "  ,*it = " << *it << endl;
    }
    return 0;
}

vlook函数对格式要求_表格式教案卡片式教案_一次函数教案格式

    //不返回值
    int myarr[] = { 1,2,100 };
    
    //调用第一种语法格式
    vector::iterator it = search(myvector.begin(), myvector.end(), myarr, myarr + 3);
    if (it != myvector.end()) {
        cout << "第一个{11,1,2}的起始位置为:" << it - myvector.begin() << "  ,*it = " << *it << endl;
    }
    

2.2 第二种语法格式

第二条语法定制规则就不介绍了,因为感觉有点鸡肋。