如何显示存储在向量中的所有元素?

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;
}

问题:

  1. 显示所有汽车列表时出错。如何解决?

  2. 以及如何检索 carList 中特定元素的信息?

如果我认为 和 头文件也包含在内,那么该程序有很多杂散的编译错误。你没有检查那些吗? 比如:choice 和 carPlate 从未被声明过。 Class 不以 ';' 结尾等等

问题: 1. 您创建了一个交通工具 'a' 并且从不在成员变量中放置任何内容。我想 info() 函数应该这样做,那为什么不调用它呢。我猜你需要在某个循环中这样做。

  1. 您将 carList 向量设为私有并尝试将其作为参数从 main 传递到 displayCarInfo() 函数。我希望您意识到不需要这样的东西,因为它可以作为 class 的成员函数,它可以直接访问 carList。您只需要使用对象调用 public 函数即可。

  2. 由于向量是无界的(意味着它们的范围可以扩大和缩小),使用常量循环打印向量的内容不是一个好主意。这样,您总是有可能超过 运行 循环或低于 运行 循环。 更喜欢 for vector<string>::iterator it = carList.begin(); it!= carList.end(); it++) std::cout << *it << std::endl;

虽然使用 ostream_iterators 和 std::copy 有更聪明的方法来做同样的事情,但现在可以休息了。

  1. 您不需要将向量作为参数传递给 void displayCarInfo();:

    class Vehicle{ //<--- define classes starting with uppercase 
    private:
       vector<string>carList;
    public:
        void info();
        void displayCarInfo();
    }; //<----- you need a semicolon here
    
  2. 终止条件应该是向量大小。

    void vehicle::displayCarInfo(){
        for(int i = 0; i < carList.size(); i++){
            cout << carList[i];
        }
    }
    

main()中的:

  int main(){
      vehicle a;
      a.displayCarInfo();
      return 0;
  }