如何显示存储在向量中的所有元素?
How to display all the elements stored in a vector?
class vehicle{
private:
vector<string>carList;
public:
void info();
void displayCarInfo(vector<string>&carList);
}
void vehicle::info(){
char a;
string choice;
do{
cout<<"Please enter your car Reg number: ";
cin >> carPlate;
carList.push_back(carPlate);
cout << "Do you want to continue add car info(y/n)?";
cin >> choice;
}while(choice == "y");
}
void vehicle::displayCarInfo(vector<string>&carList){
for(int i = 0; i < 100; i++){
cout << carList[i];
}
}
//----------------------------------------------------------------
int main(){
vehicle a;
a.displayCarInfo(carList);
return 0;
}
问题:
显示所有汽车列表时出错。如何解决?
以及如何检索 carList
中特定元素的信息?
如果我认为 和 头文件也包含在内,那么该程序有很多杂散的编译错误。你没有检查那些吗?
比如:choice 和 carPlate 从未被声明过。 Class 不以 ';' 结尾等等
问题: 1. 您创建了一个交通工具 'a' 并且从不在成员变量中放置任何内容。我想 info() 函数应该这样做,那为什么不调用它呢。我猜你需要在某个循环中这样做。
您将 carList 向量设为私有并尝试将其作为参数从 main 传递到 displayCarInfo() 函数。我希望您意识到不需要这样的东西,因为它可以作为 class 的成员函数,它可以直接访问 carList。您只需要使用对象调用 public 函数即可。
由于向量是无界的(意味着它们的范围可以扩大和缩小),使用常量循环打印向量的内容不是一个好主意。这样,您总是有可能超过 运行 循环或低于 运行 循环。
更喜欢
for vector<string>::iterator it = carList.begin(); it!= carList.end(); it++) std::cout << *it << std::endl;
虽然使用 ostream_iterators 和 std::copy 有更聪明的方法来做同样的事情,但现在可以休息了。
您不需要将向量作为参数传递给 void displayCarInfo();
:
class Vehicle{ //<--- define classes starting with uppercase
private:
vector<string>carList;
public:
void info();
void displayCarInfo();
}; //<----- you need a semicolon here
终止条件应该是向量大小。
void vehicle::displayCarInfo(){
for(int i = 0; i < carList.size(); i++){
cout << carList[i];
}
}
main()
中的:
int main(){
vehicle a;
a.displayCarInfo();
return 0;
}
class vehicle{
private:
vector<string>carList;
public:
void info();
void displayCarInfo(vector<string>&carList);
}
void vehicle::info(){
char a;
string choice;
do{
cout<<"Please enter your car Reg number: ";
cin >> carPlate;
carList.push_back(carPlate);
cout << "Do you want to continue add car info(y/n)?";
cin >> choice;
}while(choice == "y");
}
void vehicle::displayCarInfo(vector<string>&carList){
for(int i = 0; i < 100; i++){
cout << carList[i];
}
}
//----------------------------------------------------------------
int main(){
vehicle a;
a.displayCarInfo(carList);
return 0;
}
问题:
显示所有汽车列表时出错。如何解决?
以及如何检索
carList
中特定元素的信息?
如果我认为 和 头文件也包含在内,那么该程序有很多杂散的编译错误。你没有检查那些吗? 比如:choice 和 carPlate 从未被声明过。 Class 不以 ';' 结尾等等
问题: 1. 您创建了一个交通工具 'a' 并且从不在成员变量中放置任何内容。我想 info() 函数应该这样做,那为什么不调用它呢。我猜你需要在某个循环中这样做。
您将 carList 向量设为私有并尝试将其作为参数从 main 传递到 displayCarInfo() 函数。我希望您意识到不需要这样的东西,因为它可以作为 class 的成员函数,它可以直接访问 carList。您只需要使用对象调用 public 函数即可。
由于向量是无界的(意味着它们的范围可以扩大和缩小),使用常量循环打印向量的内容不是一个好主意。这样,您总是有可能超过 运行 循环或低于 运行 循环。 更喜欢
for vector<string>::iterator it = carList.begin(); it!= carList.end(); it++) std::cout << *it << std::endl;
虽然使用 ostream_iterators 和 std::copy 有更聪明的方法来做同样的事情,但现在可以休息了。
您不需要将向量作为参数传递给
void displayCarInfo();
:class Vehicle{ //<--- define classes starting with uppercase private: vector<string>carList; public: void info(); void displayCarInfo(); }; //<----- you need a semicolon here
终止条件应该是向量大小。
void vehicle::displayCarInfo(){ for(int i = 0; i < carList.size(); i++){ cout << carList[i]; } }
main()
中的:
int main(){
vehicle a;
a.displayCarInfo();
return 0;
}