listtest8.cpp

来自「VC.net 的一些有用的技巧」· C++ 代码 · 共 74 行

CPP
74
字号
//ListTest8.cpp
#include <list>
#include <algorithm>
#include <iostream>
using namespace std;
typedef list<int> LISTINT;

// 判断第二个元素是否是第一个元素的两倍
bool twice (int elem1, int elem2 )
{
   return 2 * elem1 == elem2;
}

int main( )
{
  
   LISTINT L1, L2, L3;
   LISTINT::iterator L1_Iter, L1_inIter, L2_Iter, L3_Iter;

   int i;
   for ( i = 4 ; i <= 5 ; i++ )
   {
      L1.push_back( 5 * i );
   }

   int ii;
   for ( ii = 0 ; ii <= 5 ; ii++ )
   {
      L2.push_back( 5 * ii );
   }
   for ( ii = 0 ; ii <= 5 ; ii++ )
   {
      L2.push_back( 5 * ii );
   }

   int iii;
   for ( iii = 2 ; iii <= 4 ; iii++ )
   {
      L3.push_back( 10 * iii );
   }

   cout << "List L1 = ( " ;
   for ( L1_Iter = L1.begin( ) ; L1_Iter!= L1.end( ) ; L1_Iter++ )
      cout << *L1_Iter << " ";
   cout << ")" << endl;

   cout << "List L2 = ( " ;
   for ( L2_Iter = L2.begin( ) ; L2_Iter!= L2.end( ) ; L2_Iter++ )
      cout << *L2_Iter << " ";
   cout << ")" << endl;

   cout << "List L3 = ( " ;
   for ( L3_Iter = L3.begin( ) ; L3_Iter != L3.end( ) ; L3_Iter++ )
      cout << *L3_Iter << " ";
      cout << ")" << endl;

   // 搜索L2查找第一个与L1相等的部分
   LISTINT::iterator result1;
   result1 = search (L2.begin( ), L2.end( ), L1.begin( ), L1.end( ) );

   if ( result1 == L2.end( ) )
      cout << "L2中没有与L1相等的部分." << endl;
   else
      cout << "L2中至少有一处与L1相等."<< endl;

   // 搜索L2查找两倍的值等于L3的部分
   LISTINT::iterator result2;
   result2 = search  (L2.begin( ), L2.end( ), L3.begin( ), L3.end( ), twice );

   if ( result2 == L2.end( ) )
      cout << "L2中任一个序列值的两倍都不等于L3."<< endl;
   else
      cout << "L2中有一个序列值的两倍等于L3."<< endl;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?