文件aaa.txt中含有一些行,每行中有一些整数,可以构成—个向量,整个文件可以看成是一组向量,其中每个元素又都是向量,只不过作为元素的向量其长度参差不齐。设计一个个排序程序,使得按从短到长的顺序输出每个向量,这时候,程序代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| #include<iostream> #include<fstream> #include<sstream> #include<vector> using namespace std;
typedef vector< vector<int> > Mat; Mat input(); void mySort(Mat& a); void print(const Mat& a);
int main() { Mat a = input(); mySort(a); print(a); return 0; } Mat input() { ifstream in("aaa.txt"); Mat a; for(string s; getline(in,s); ) { vector<int> b; istringstream sin(s); for( int ia; sin>>ia; ) b.push_back(ia); a.push_back(b); } return a; } void mySort(Mat& a) { for( int pass=1; pass<a.size(); pass++ ) { for( int i=0; i<a.size()-pass; i++ ) if( a[i+1].size() < a[i].size() ) a[i].swap( a[i+1] ); } } void print(const Mat &a) { for( int i=0; i<a.size(); i++ ) { for(int j=0; j<a[i].size(); j++ ) cout<<a[i][j]<<" "; cout<<endl; } }
|