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

时间:2015-09-17 05:16:43

标签: c++ vector pass-by-reference

alertDialogBuilder.setNegativeButton((DialogInterface) d -> d.cancel());

问题:

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

  2. 我如何检索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; } 内特定元素的信息?

2 个答案:

答案 0 :(得分:0)

如果我认为那些和头文件也被包含在内,那么该程序有很多杂散编译错误。你没有检查那些?? 喜欢:选择和carPlate从未被宣布。上课不以&#39;;&#39;结尾。等

问题:1。你创造了一辆车&#39; a&#39;并且从不在成员变量中添加任何内容。我想info()函数应该这样做,那么为什么它没有被调用。我想你需要在某个循环中这样做。

  1. 您将carList矢量设为私有,并尝试将其作为参数从main传递给displayCarInfo()func。我希望你意识到这样的事情不会被要求作为同一个类的成员函数,它可以直接访问carList。你只需要使用一个对象来调用public函数。

  2. 由于向量是无界的(意味着它们的范围可以增长和缩小),因此使用常量循环打印向量的内容不是一个好主意。这样你总是冒着超越循环或运行不足的风险。 比较喜欢 for vector<string>::iterator it = carList.begin(); it!= carList.end(); it++) std::cout << *it << std::endl;

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

答案 1 :(得分:0)

  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];
        }
    }
    
  3. main()中的内容:

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