STL常用算法

来源:互联网 发布:java网络高级编程 编辑:程序博客网 时间:2024/05/18 15:50
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)









0 0