STL 代码示例整理(1)
2016-12-08 11:33
357 查看
1:vector
STL中的向量是怎样初始化的。
理解带有数组下标和方括号的STL向量
2:STL中的集合(set)
// 输出: apple banana cantaloupes grapes orange
//注意:输出的集合中的元素是按字母大小顺序排列的,而且每个值都不重复。
3:在map中怎样使用自定义的类。
4:测试分数统计
#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; }
相关文章推荐
- STL 代码示例整理(2)
- WebGL自学教程——WebGL示例:14.0 代码整理
- 更新整理本人所属博客文章的示例代码和工具组件(Java 和 C++)
- C++/STL实现判断平面内两条线段的位置关系代码示例
- 微软一站式示例代码整理 - Windows SDK Development (更新至2010-8-25)
- struts1登录示例代码_动力节点Java学院整理
- STL学习之十四:常用算法 for_each 和 transform以及adjacent_find的示例代码
- 从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
- C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
- 本系列love2d示例代码错误集中整理
- 【Python+Tensorflow】Deep Q Network (DQN) 迷宫示例代码整理
- STL示例代码01(指针迭代器)
- 整理:C#写ActiveX, 从代码到打包到签名到发布的示例
- 从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
- C#调用EasyPusher推送到EasyDarwin流媒体服务器直播方案及示例代码整理
- C#调用EasyPusher推送到EasyDarwin流媒体服务器直播方案及示例代码整理
- 从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
- GitHub 通告:整理了一个 C 和 C++ 开源库的清单(含示例代码)
- WebGL自学教程——WebGL示例:13.0 代码整理
- 从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)