c++ STL 测试代码

// STLTest.cpp :在 VS2010 下测试通过

//

#include "stdafx.h"
#include <stdlib.h>    // Need random(), srandom()
#include <time.h>      // Need time()
#include <string>
#include <iostream>
#include <iterator>
#include <algorithm>
#include <deque>
#include <list>
#include <vector>
#include <functional> // Need ptr_fun()
#include <map>
#include <stack>
#include <set>
/*
#include Container Class
<deque> deque
<list> list
<map> map, multimap
<queue> queue, priority_queue
<set> set, multiset
<stack> stack
<vector> vector, vector<bool>
*/
using namespace std;
#define SIZE 100

double darray[SIZE] = {1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9};
vector<double> vdouble(10);

int iarray[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
vector<int> v(iarray, iarray + 10);
// Function prototypes
void Display(vector<int>& vr, const char *s);

unsigned int RandInt(const unsigned int n);
void DisplayMap(map<int,std::string> myMap);
int _tmain(int argc, _TCHAR* argv[])
{
 cout<<"array"<<endl;
 iarray[20] = 50;
 int* ip = find(iarray, iarray + SIZE, 50);
 if (ip == iarray + SIZE)   
  cout << "50 not found in array" << endl; else   
  cout << *ip << " found in array" << endl;
 int k=0;
// cin>>k;
 
 cout<<"vector"<<endl;

 vector<int> intVector(100);
 intVector[20] = 50;
 vector<int>::iterator intIter =  find(intVector.begin(), intVector.end(), 50);
 if (intIter != intVector.end())   
  cout << "Vector contains value " << *intIter << endl;
 else  
  cout << "Vector does not contain 50" << endl;

 //当使用copy()算法的时候,你必须确保目标容器有足够大的空间,或者容器本身是自动扩展的。


// cin>>k;
 cout<<"vector copy"<<endl;
 vector<double>::iterator outputIterator = vdouble.begin();
 copy(darray, darray + 10, outputIterator);
 while (outputIterator != vdouble.end())
 {  
  cout << *outputIterator << endl;   
     outputIterator++;
 }
 //cin>>k;
 cout<<"发生器函数对象 sample"<<endl;
 
 srand(time(NULL) );
 //Seed random generator
 Display(v, "Before shuffle:");
 pointer_to_unary_function<unsigned int, unsigned int> ptr_RandInt = ptr_fun(RandInt); // Pointer to RandInt()//注意这行
 random_shuffle(v.begin(), v.end(), ptr_RandInt);
 Display(v, "After shuffle:");

 //cin>>k;
 cout<<"my sample"<<endl;

 
 stack<int> myStack;
 myStack.push(1);
 myStack.push(2);
 cout<<myStack.top()<<endl;
 //第一种和第二种在效果上是完成一样的,用insert函数插入数据,在数据的插入上涉及到集合的唯一性这个概念,即当map中有这个关键字时,insert操作是插入数据不了的,但是用数组方式就不同了,它可以覆盖以前该关键字对应的值,用程序说明

 map<int,std::string> myMap;

 myMap.insert(pair<int,std::string>(1,"jiayp"));
 myMap.insert(pair<int,std::string>(2,"cdh"));
 map<int, string>::iterator  iter;

       for(iter = myMap.begin(); iter != myMap.end(); iter++)
    {
     cout<<iter->first<<" "<<iter->second<<endl;
    }

    myMap.insert(map<int, string>::value_type (4, "student_one"));
       myMap.insert(map<int, string>::value_type (5, "student_two"));
       myMap.insert(map<int, string>::value_type (6, "student_three"));

    DisplayMap(myMap);
    myMap[3]="test";
   
  DisplayMap(myMap);
  cout<<"for"<<endl;
  for(int i=1;i<=myMap.size();i++)
  {
   cout<<myMap[i]<<endl;
  }
  cout<<"find"<<endl;
  cout<<myMap.count(13)<<endl;

  //map<int, string>::iterator iter;

        iter = myMap.find(2);

  if(iter != myMap.end())
  {
      cout<<"Find, the value is "<<iter->second<<endl;
  }
  else
  {
   cout<<"Do not Find"<<endl;
  }

   map<int, string>::iterator  iter2=myMap.lower_bound(2);
   iter=myMap.begin();
    
  while(iter !=iter2)
  {
      cout<<"lower_bound (2) is "<<iter->second<<endl;
   iter++;
  }
  
  iter=myMap.upper_bound(2);
  while(iter != myMap.end())
  {
      cout<<"upper_bound (2) is "<<iter->second<<endl;
   iter++;
  }


   //如果要删除1,用迭代器删除    
       iter = myMap.find(1);
       myMap.erase(iter);

    int n = myMap.erase(2);//
     DisplayMap(myMap);
    // myMap.earse(mapStudent.begin(), myMap.end());
  myMap.clear();

  cout<<myMap.empty()<<endl;
  cin>>k;
  cout<<"next sample"<<endl;
 

 //myMap.insert(
 return 0;
}
void DisplayMap(map<int,std::string> myMap)
{
 map<int, string>::iterator  iter;
  for(iter = myMap.begin(); iter != myMap.end(); iter++)
    {
     cout<<iter->first<<" "<<iter->second<<endl;
    }
}
// Display contents of vector vr
void Display(vector<int>& vr, const char *s)
{
 cout << endl << s << endl;
 copy(vr.begin(), vr.end(), ostream_iterator<int>(cout, " "));
    cout << endl;
}
// Return next random value in sequence modulo n
unsigned int RandInt(const unsigned int n)
{
 return rand() % n;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值