C++ 里vector的使用,运行时出错,请问怎么解决??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 里vector的使用,运行时出错,请问怎么解决??相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <vector>
using namespace std;

class A
public:
vector<int> getVector()
return list;


private:
vector<int> list;
;

void pushNum(A* a)
a->getVector().push_back(1);
cout << a->getVector().at(0) << endl;


int main()
A a = A();
pushNum(&a);
cout << a.getVector().at(0) << endl;
return 0;

程序运行时出错,怎么解决?求解!

参考技术A vector<int> getVector()返回值为list的副本,而非list;
所以,void pushNum(A* a)中:
第一行,a->getVector()创建一个vector<int>临时变量,临时变量调用push_back(1),list仍为空,之后临时变量销毁;
第二行,a->getVector()创建另一个vector<int>临时变量,由于list为空,该临时变量亦为空,之后临时变量调用at(0)越界出错。追问

老师不好意思现在没办法上机调试,如果把函数getVector()改为return &list是否就正确了

本回答被提问者采纳
参考技术B #include <iostream>
#include <vector>    
using namespace std;
//
class A
public:
    vector<int> getVector()
        return list;
    
    void pushNum(int num)
        this->list.push_back(num);
        cout << this->list.at(0) << endl;
    
private:
    vector<int> list;
;
//
int main()
    A a = A();
    a.pushNum(12);
    cout << a.getVector().at(0) << endl;
    return 0;

追问

不好意思 ,我问的问题目的是解决关于vector对象作为值得传递问题。不是单纯完成上述代码的功能。

以上是关于C++ 里vector的使用,运行时出错,请问怎么解决??的主要内容,如果未能解决你的问题,请参考以下文章

c++里vector怎么用?

在 C++ 向量中存储指针时出错

容器(vector)和指针(ptr)的区别

这是安装后运行WIFI共享大师时出现的,请问这是怎么回事?

你好。请问这个VHDL程序的测试程序要如何写?要在modelsim里运行的。。

C++请问ShowWindow(hwnd,nCmdShow)和ShowWindow(hwnd,iCmdShow)的区别是啥?