【发布时间】:2015-01-20 21:54:30
【问题描述】:
我写了一个代码来计算两个向量的标量积。我似乎无法完全理解引用传递和 const。当我输入 void entervalues 函数的参数时,一个 void entervalues(string& vect, vector& vectt);没有 const,它不会编译。当我输入 void entervalues(const string& vect, vector& vectt);在字符串之前加上 const,它会编译。为什么是这样?以及为什么放 & 更好。为什么我不能只输入 void entervalues(string vect, vector vectt); ?
我的代码是:
void entervalues(const string& vect, vector<double>& vectt);
double scalar(vector<double> u, vector<double> v);
double ask_number(int N_MAX){
int n;
do{ cout << "Enter a size for the vectors between 1 and " << N_MAX << endl;
cin >> n; }while((n < 1) or (n > N_MAX));
return n;
}
int main(){
vector<double> U(ask_number(20));
vector<double> V(ask_number(20));
entervalues("First ", U);
entervalues("Second ", V);
cout << "Scalar product is " << scalar(U,V) << endl;
return 0;
}
double scalar(vector<double> u, vector<double> v){
double sum(0.0);
for(size_t i(0); i < u.size(); ++i){
sum = sum + u[i]*v[i];}
return sum;
}
void entervalues(const string& vect, vector<double>& vectt){
cout << vect << "vecteur: " << endl;
for(size_t i(0); i < vectt.size(); ++i){
cout << "Coordonates: " << i+1 << endl;
cin >> vectt[i];
}
}
【问题讨论】:
标签: c++ vector constants parameter-passing pass-by-reference