ACM学习历程8——Vector应用
来源:互联网 发布:三维测量的算法 编辑:程序博客网 时间:2024/05/29 11:53
Vectors 包含着一系列连续存储的元素,其行为和数组类似。访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线性时间复杂度。Vector的方法有如下一些:
应用举例一:
输入数据:含有不多于50个的正整数n(0<=n<=46),输出数:对于每个n计算其第n项fibonacci数,每个结果独占一行。
输入:
6
10
输出:
8
55
#include <iostream>#include <vector>using namespace std;int main(){ vector<int> v; int i; int n; v.push_back(0); v.push_back(1); for(i=2; i<=46; i++) v.push_back(v[i-1]+v[i-2]); while(cin>>n) cout<<v[n]<<endl; return 0;}
应用举例二:
说明:输入数据 第一行为一个整数m,表示测试用例的个数;接下来有m行,每行表示一个测试用例,每个测试用例为一个十进制数n;
输出数据 十进制整数n对应的二进制数中所有1的位置,在一行输出,最低位的位置为0多个测试用例的结果顺序输出,之间没有空行,整数前不加无效的0。
输入样例 :
2
13
8
输出样例:
0 2 3
3
#include <iostream>#include <vector>using namespace std;int main(){ vector<int> v; int i,n,data; while(cin>>n) { for(i=0; i<n; i++) { v.clear(); cin>>data; do { v.push_back(data%2); data=data/2; } while(data!=0); for(int j=0; j<v.size(); j++) { if(v[j]==1) cout<<j<<" "; } cout<<endl; } } return 0;}下面是对结构体数据类型自定义比较函数的方法,可以根据题目排序的要求在Sort中使用不用的自定义比较函数即可。
#include<iostream>#include<string>#include<fstream>#include<algorithm>#include<cstring>#include<vector>using namespace std;typedef struct book{ string name; int year; int price;} STU;bool comName(const STU &a,const STU &b){ if(a.name!=b.name) return a.name<b.name; else if(a.year!=b.year) return a.year<b.year; else return a.price<b.price;}bool comYear(const STU &a,const STU &b){ if(a.year!=b.year) return a.year<b.year; else if(a.name!=b.name) return a.name<b.name; else return a.price<b.price;}bool comPrice(const STU &a,const STU &b){ if(a.price!=b.price) return a.price<b.price; else if(a.name!=b.name) return a.name<b.name; else return a.year<b.year;}int main(){ ifstream fin("test.txt"); ofstream fout("output.pc2"); int i,n; vector<STU> v; vector<STU>::iterator p; STU b; while(fin>>n) { v.clear(); if(n==0) break; for(i=0; i<n; i++) { fin>>b.name>>b.year>>b.price; v.push_back(b); } string comp; fin>>comp; if(comp=="Name") sort(v.begin(),v.end(),comName); else if(comp=="Year") sort(v.begin(),v.end(),comYear); else sort(v.begin(),v.end(),comPrice); for(p=v.begin(); p!=v.end(); p++) { cout<<(*p).name<<" "<<(*p).year<<" "<<(*p).price<<endl; } } fin.close(); fout.close(); return 0;}
0 0
- ACM学习历程8——Vector应用
- ACM学习历程6——Vector向量容器
- ACM学习历程7——Vector向量容量扩展机制
- ACM学习历程16——List链表的应用之简单约瑟夫问题
- ACM学习历程1——输入输出语句
- ACM学习历程4——STL的使用
- ACM学习历程10——set集合容器
- ACM学习历程12——Map映照容器
- ACM学习历程13——multimap集合容器
- ACM学习历程17——bitset位集合容器
- ACM学习历程18——stack堆栈容器
- ACM学习历程21——各种排列组合问题
- ACM学习历程22——进制转换
- ACM学习历程23——最小周期串问题
- ACM学习历程24——最大回文子串
- ACM学习历程25——高精度四则运算
- ACM学习历程26——KMP算法
- ACM学习历程27——模式匹配
- LeetCode 16. 3Sum Closest LeetCode 18. 4Sum
- 三角形类雏形(2)
- P2020的LAW分析
- Unity UI(二):Rect Transform组件
- linux-socket tcp客户端服务器编程模型及代码详解
- ACM学习历程8——Vector应用
- 单源最短路SPFA(模板)
- 嵌入式复习1
- vb6.0总结
- Java中的栈内存和堆内存
- AngularJs ngList、ngRepeat、ngModelOptions
- 【lightoj1045】数学-小知识点
- 常用几种数据库,取前10条记录的sql语句写法
- 三角形雏形(3)