【问题标题】:Accessing and outputing private vector访问和输出私有向量
【发布时间】:2020-04-20 01:35:14
【问题描述】:

直截了当,我试图输出在类中存储为私有的向量的值,但它没有输出任何东西。

#include <iostream>
#include<vector>


using namespace std;

class logic {

public:
    void setVector(vector <int> aa){a = aa;}
    void setVector1(vector<int> bb){bb = b;}

     vector<int> &getVector(){return a;}
     vector <int> &getVector1(){return b;}

    int logics(vector<int>&a, vector<int>&b);
    void printArrays(vector <int>a, vector <int>b);

private:
  vector <int> a;
  vector <int> b;



};

int logic::logics(vector<int> &a, vector<int> &b){


    int r;
    while(cin >> r){
        for(int i = 0; i < a.size(); i++){
            a.push_back(r);
        }
        if(r < 0){break;}
    }

}

void logic::printArrays(vector<int> a, vector<int> b){
        cout << "im working!" << endl;

        for(int i = 0; i < a.size(); i++){
            cout << a[i] << "\t";
        }

        for (vector <int>::iterator it = a.begin(); it < a.end(); it++){
            cout << *it << endl;
        }
}


int main()
{

    logic obj;

    obj.logics(obj.getVector(),obj.getVector1());
    obj.printArrays(obj.getVector(), obj.getVector1());

}

我试图使向量保持不变,因为我已经看到它们是这样声明的,但是向量正在被修改,所以我得到一个错误。我还看到您可以制作对象和类的向量,例如向量 a,但我不理解它

提前致谢。

【问题讨论】:

  • 抱歉,确实如此,我实际上有 2 个向量,但我删除了第二个向量以便于阅读。在我的类里面的实际代码中是这样定义的: void printArrays(vector a, vector b);当我发布问题时,我只是忘记从方法中删除它。
  • 这将是我的完整代码。它编译没有错误,输入并显示“我正在工作!”但不打印矢量

标签: c++ class vector


【解决方案1】:

logics() 中,如果a 为空,则此循环不执行任何操作

for(int i = 0; i < a.size(); i++){
  a.push_back(r);
}

所以a 仍然为空。

另一方面,如果a 不是空的,那么它就会爆炸!
(每次我们尝试达到它的大小时,后者都会增长......)

【讨论】:

  • 谢谢我明白了大小的事情。我将循环更改为 i &lt; 1 并按预期工作。
猜你喜欢
  • 1970-01-01
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-25
  • 2012-05-09
  • 2018-11-02
相关资源
最近更新 更多