STL常用算法

    xiaoxiao2025-08-18  5

    1.copy()函数    int myints[]={10,20,30,40,50,60,70};    std::vector<int> myvector (7);    std::copy ( myints, myints+7, myvector.begin() );    将一个容器中的元素复制到另一个容器中 2.count()函数    int myints[] = {10,20,30,30,20,10,10,20};   // 8 elements    int mycount = std::count (myints, myints+8, 10);    std::cout << "10 appears " << mycount << " times.\n";

       计算连续存储的容器中特定元素出现的个数

    3.归并排序   int first[] = {5,10,15,20,25};   int second[] = {50,40,30,20,10};   std::vector<int> v(10);   std::sort (first,first+5);   std::sort (second,second+5);   std::merge (first,first+5,second,second+5,v.begin()); 4.逆序   for (int i=1; i<10; ++i) myvector.push_back(i);   // 1 2 3 4 5 6 7 8 9   std::reverse(myvector.begin(),myvector.end());    // 9 8 7 6 5 4 3 2 1 5.寻找子串    for (int i=1; i<10; i++) haystack.push_back(i*10);    // using default comparison:    int needle1[] = {40,50,60,70};    std::vector<int>::iterator it;    it = std::search (haystack.begin(), haystack.end(), needle1, needle1+4);   if (it!=haystack.end())     std::cout << "needle1 found at position " << (it-haystack.begin()) << '\n';   else     std::cout << "needle1 not found\n";   // using predicate comparison:   int needle2[] = {20,30,50};   it = std::search (haystack.begin(), haystack.end(), needle2, needle2+3, mypredicate);   if (it!=haystack.end())     std::cout << "needle2 found at position " << (it-haystack.begin()) << '\n';   else     std::cout << "needle2 not found\n"; 6.排序    bool myfunction (int i,int j) { return (i<j); }   struct myclass {   bool operator() (int i,int j) { return (i<j);}   } myobject;   int myints[] = {32,71,12,45,26,80,53,33};   std::vector<int> myvector (myints, myints+8);               // 32 71 12 45 26 80 53 33   // using default comparison (operator <):   std::sort (myvector.begin(), myvector.begin()+4);           //(12 32 45 71)26 80 53 33   // using function as comp   std::sort (myvector.begin()+4, myvector.end(), myfunction); // 12 32 45 71(26 33 53 80)   // using object as comp   std::sort (myvector.begin(), myvector.end(), myobject);     //(12 26 32 33 45 53 71 80)
    转载请注明原文地址: https://ju.6miu.com/read-1301859.html
    最新回复(0)