《c++stl程序代码案例》由会员分享,可在线阅读,更多相关《c++stl程序代码案例(32页珍藏版)》请在金锄头文库上搜索。
1、1例1:建立一个双端队列容器#include #include /使用deque需要包含的头文件 #include using namespace std; const int n=10; int main() deque de; int arrayn=10,1,3,4,5,7,2,9,8,6;int i; for(i=0; i #include /使用list需要包含的头文件 #include using namespace std; const int n=10;void display (list _list) if(!_list.empty() list:iterator it; fo
2、r(it=_list.begin();it!=_list.end(); it+) cout list1; list1.insert(list1.begin(),array,array+n); display(list1); list list2=list1; for(int i=0;i #include #include using namespace std; const int n=5;void display (list _list) if(!_list.empty() list:iterator it; for(it=_list.begin();it!=_list.end(); it+
3、) cout list1; list1.insert(list1.begin(),array,array+n); display(list1); list1.sort(greater();/按降序排列,greater为降序函数对象display(list1); list1.sort();/升序排列 display(list1); list list2=list1; for(int i=0;i() display(list1); display(list2); list1.reverse();/逆序 display(list1); C+STL中的容器2 7 5 3 3434 7 5 3 22 3
4、 5 7 345 7 342 3 5 5 7 7 34 34 Null list34 34 7 7 5 5 3 2运行结果:C+STL中的容器9例5: 简单的栈应用#include #include using namespace std;int main() stack sk1; for(int i=0;i #include using namespace std; const int N=7;void display(const vectorint main() vector invec; int arrayN=2,3,5,2,8,18,4; invec.insert(invec.begi
5、n(),array,array+N); display(invec); vector invec2; invec2.insert(invec2.begin(),invec.begin(),invec.begin()+invec.size()/2); display(invec2); 迭代器12void display(const vector vector:const_iterator it_end=_vec.end(); for(;iter!=it_end; iter+) cout InIt find(InIt first, InIt last, const T lfirst 和 last
6、这两个参数都是容器的迭代器,它们 给出了容器中的查找区间起点和终点。 这个区间是个左闭右开的区间,即区间的起点 是位于查找范围之中的,而终点不是lval参数是要查找的元素的值l函数返回值是一个迭代器。如果找到,则该迭代 器指向被找到的元素。如果找不到,则该迭代器 指向查找区间终点。16例7:可变序列算法实例#include #include /算法需要包含的头文件 #include /使用函数对象需要包含的头文件 #include using namespace std;class out public: void operator() (int x) cout ivec(array,arra
7、y+sizeof(array)/sizeof(int); vector:iterator iter; /找到第一个为4的元素位置,并输出此值和后面的所有值 for(iter=find(ivec.begin(),ivec.end(),4);iter!=ivec.end();iter+) cout(),4) #include #include #include using namespace std;const int n=9; class square /定义平方操作的函数对象 public: int operator() (int iter) return iter*iter; ; class
8、 odd_by_one /定义每次乘以2的函数对象 public: int operator()() return x=x*2; private: static int x; ; int odd_by_one:x=1;22int main() int arrayn=0,1,2,3,5,3,8,5,1; vector ivec1(n,0); vector:iterator iter=ivec1.begin(); ostream_iterator output(cout,“t“);/定义输出流迭代器 copy(array,array+n,output);/利用copy将数组内容考到输出流对象中 c
9、out ivec2(array,array+n); generate(ivec2.begin(),ivec2.end(),odd_by_one(); copy(ivec2.begin(),ivec2.end(),output); cout ilist1(n,0); transform(ivec1.begin(),ivec1.end(),ilist1.begin(),square(); copy(ilist1.begin(),ilist1.end(),output); cout:iterator it=remove(ilist1.begin(),ilist1.end(),9); ilist1.e
10、rase(it,ilist1.end(); copy(ilist1.begin(),ilist1.end(),output); cout #include #include #include using namespace std; const int n=8;int main() int arrayn=4,3,7,2,2,3,8,5; vector ivec1(array,array+n); ostream_iterator output(cout,“ “); /输出容器中最大和最小的元素 cout ivec2(5,0); partial_sort_copy(ivec1.begin(),iv
11、ec1.begin()+5,ivec2.begin(),ivec2.end(); copy(ivec2.begin(),ivec2.end(),output); cout头文件。31例10:数值算法实例#include #include #include /所需要包含的头文件 using namespace std; const int n=6; int main() int arrayn=2,2,1,5,3,6; vector ivec1(array,array+n); vector ivec2(ivec1); ostream_iterator output(cout,“ “); /对序列进
12、行求和累积 coutaccumulate(ivec1.begin(),ivec1.end(),0)endl; /对序列进行部分求和 partial_sum(ivec1.begin(),ivec1.end(),output); coutendl; /对序列求相邻元素的差 adjacent_difference(ivec1.begin(),ivec1.end(),output); coutendl; /对两个向量做内积 coutinner_product(ivec1.begin(),ivec1.end(),ivec2.begin(),0)endl; 19 2 4 5 10 13 19 2 0 -1 4 -2 3 79 Press any key to continue运行结果: