![]() |
#2
yuyunliuhen2007-05-13 20:39
以下是引用icedge在2007-5-13 20:04:14的发言:
*******程序1************************************** #include<iostream> #include<vector> #include<fstream> #include<sstream> using namespace std; typedef vector<char>str; str input(); void output(const str&a); int main(){ str a=input(); output(a); system("pause"); } vector<char>input(){ ifstream in("a.txt"); str a; for(string s;getline(in,s);){ istringstream sin(s); for(char b;sin>>b;) a.push_back(b); } return a; } void output( const str&a){/////不能加const for(int i=0;i<a.size();i++) cout<<a[i]; } **********程序2************************************ #include<iostream> #include<fstream> #include<sstream> #include<vector> using namespace std; typedef vector<vector<int> >mat; mat input(); void mysort(mat&a); void print( mat&a); //去掉const int main() {mat a=input(); mysort(a); print(a); system("pause"); } 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( mat&a)//////////去掉const {for(int i=0;i<a.size();++i){ for(int j=0;j<a[i].size();++j) cout<<a[i][j]<<" "; cout<<endl; } } 和你函数声明有关啊,把程序改一下,也还是一样的 |
*******程序1**************************************
#include<iostream>
#include<vector>
#include<fstream>
#include<sstream>
using namespace std;
typedef vector<char>str;
str input();
void output(str&a);
int main(){
str a=input();
output(a);
system("pause");
}
vector<char>input(){
ifstream in("a.txt");
str a;
for(string s;getline(in,s);){
istringstream sin(s);
for(char b;sin>>b;)
a.push_back(b);
}
return a;
}
void output(str&a){/////不能加const
for(int i=0;i<a.size();i++)
cout<<a[i];
}
**********程序2************************************
#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);
system("pause");
}
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)//////////这里的const又必须保留
{for(int i=0;i<a.size();++i){
for(int j=0;j<a[i].size();++j)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
有问题的地方我已经用汉语标出来了,为什么看起来很接近的两个函数却是一个必须有const才能编译而另一个却是必须去掉const才是正确的?我是初学c++,也许这个问题太低级了,希望高手不吝赐教。