STL 代码示例整理(1)

1:vector

#include <vector>  
#include <iostream> 
using namespace std;

char* szHW = "Hello World";  

int main(int argc, char* argv[])
{
  vector <char> vec;  
  vector <char>::iterator vi;

  char* cptr = szHW;  // 将一个指针指向“Hello World”字符串
  while (*cptr != '\0')
  {  
     vec.push_back(*cptr);
     cptr++;  
   }
  for (vi=vec.begin(); vi!=vec.end(); vi++)  
  { 
     cout << *vi; 
  } 
  cout << endl; 
  return 0;
}

STL中的向量是怎样初始化的。

#include <cstring> 
#include <vector>
using namespace std;

int ar[10] = {  12, 45, 234, 64, 12, 35, 63, 23, 12, 55  };
char* str = "Hello World";

int main(int argc, char* argv[])
{
  vector <int> vec1(ar, ar+10);
  vector <char> vec2(str, str+strlen(str));
  return 0;
}

理解带有数组下标和方括号的STL向量

#include <cstring>
#include <vector>
#include <iostream>
using namespace std;

char* szHW = "Hello World";
int main(int argc, char* argv[])
{
  vector <char> vec(strlen(sHW)); //为向量分配内存空间
  int i, k = 0;
  char* cptr = szHW;
  while (*cptr != '\0')
  {  
     vec[k] = *cptr;
     cptr++;
     k++;
  }
  for (i=0; i<vec.size(); i++)
  { 
     cout << vec[i]; 
   }
  cout << endl;
  return 0;
}

2:STL中的集合(set)

#include <string>
#include <set>
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
  set <string> strset;
  set <string>::iterator si;
  strset.insert("cantaloupes");
  strset.insert("apple");
  strset.insert("orange");
  strset.insert("banana");
  strset.insert("grapes");
  strset.insert("grapes");  
  for (si=strset.begin(); si!=strset.end(); si++)  
  {
    cout << *si << " ";
   }
  cout << endl;
  return 0;
}

// 输出: apple banana cantaloupes grapes orange
//注意:输出的集合中的元素是按字母大小顺序排列的,而且每个值都不重复。

3:在map中怎样使用自定义的类。

#include <string>
#include <iostream>
#include <vector>
#include <map>
using namespace std;

class CStudent
{
  public :
     int nStudentID;
     int nAge;
  public :
      //缺省构造函数——通常为空
      CStudent()  {  }
      // 完整的构造函数
      CStudent(int nSID, int nA)  {  nStudentID=nSID; nAge=nA;  }
      //拷贝构造函数
      CStudent(const CStudent& ob)  
     {  nStudentID=ob.nStudentID; nAge=ob.nAge;  }
     // 重载“=”
     void operator = (const CStudent& ob)  
    {  nStudentID=ob.nStudentID; nAge=ob.nAge;  }
};

int main(int argc, char* argv[])
{
  map <string, CStudent> mapStudent;

  mapStudent["Joe Lennon"] = CStudent(103547, 22);
  mapStudent["Phil McCartney"] = CStudent(100723, 22);
  mapStudent["Raoul Starr"] = CStudent(107350, 24);
  mapStudent["Gordon Hamilton"] = CStudent(102330, 22);

  // 通过姓名来访问Cstudent类中的成员
    cout << "The Student number for Joe Lennon is " << 
    (mapStudent["Joe Lennon"].nStudentID) << endl;

  return 0;
}

4:测试分数统计

#include <algorithm> :
#include <numeric> // 包含accumulate(求和)函数的头文件 
#include <vector> 
#include <iostream> 
using namespace std; 

int testscore[] = {67, 56, 24, 78, 99, 87, 56}; 

//判断一个成绩是否通过了考试 
bool passed_test(int n) 
{ 
   return (n >= 60); 
} 

// 判断一个成绩是否不及格 
bool failed_test(int n) 
{ 
   return (n < 60); 
} 

int main(int argc, char* argv[]) 
{ 
    int total; 
    // 初始化向量,使之能够装入testscore数组中的元素 
     vector <int> vecTestScore(testscore, testscore + sizeof(testscore) / sizeof(int)); 
     vector <int>::iterator vi; 

    // 排序并显示向量中的数据 
    sort(vecTestScore.begin(), vecTestScore.end()); 
    cout << "Sorted Test Scores:" << endl; 
    for (vi=vecTestScore.begin(); vi != vecTestScore.end(); vi++) 
    { cout << *vi << ", "; } 
      cout << endl; 

       // 显示统计信息 

       // min_element 返回一个 _iterator_ 类型的对象,该对象指向值 最小的那个元素。 
        vi=min_element(vecTestScore.begin(),vecTestScore.end()); 
        cout << "The lowest score was " << *vi << "." << endl; 

       //与min_element类似,max_element是选出最大值。 
       vi=max_element(vecTestScore.begin(),vecTestScore.end()); 
       cout << "The highest score was " << *vi << "." << endl; 

     // 使用声明函数(predicate function,指vecTestScore.begin()和vecTestScore.end())来确定通过考试的人数。 
     cout << count_if(vecTestScore.begin(),vecTestScore.end(), passed_test) << " out of " << vecTestScore.size() << " students passed the test" << endl; 

      // 确定有多少人考试挂了 
     cout << count_if(vecTestScore.begin(),vecTestScore.end(), failed_test) << " out of " << vecTestScore.size() << " students failed the test" << endl; 

      //计算成绩总和 
       total = accumulate(vecTestScore.begin(),vecTestScore.end(), 0); 
      // 计算显示平均成绩 
      cout << "Average score was " << (total / (int)(vecTestScore.size())) << endl; 

      return 0; 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的资料库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值