我在当前的项目中遇到了一些问题。我有作业类,它们保存在 vector
中。当我尝试 push_back
或 pop_back
作业时,我的程序运行良好(我只能删除多少次,添加作业多少次)。
但是,当我尝试显示我的 vector
中的内容时,我收到消息:Nothing to display,vector
is empty,尽管我 push_back
一些工作。
void Job::generirateActivities(vector<Job> job_list) {
Smt s1("Default1", 1, 2, 3);
Smt s2("Default2", 2, 3, 4);
Date d1(1, 1, 2001);
Date d2(2, 2, 2002);
Job j1(&s1, &d1);
Job j2(&s2, &d2);
job_list.push_back(a1);
job_list.push_back(a2);
}
对于打印,我正在使用:
void Job::printJobs(vector<Job> job_list) {
if (job_list.empty())
cout << "Nothing to display, vector is empty." << endl;
else {
for (unsigned int i = 0; i < job_list.size(); i++)
cout << i + 1 << ". " <<job_list[i].toString() << endl;
}
有什么问题吗?有什么建议吗?
谢谢。
最佳答案
在你的代码中你有
void Job::generirateActivities(vector<Job> job_list) {
这意味着当您调用该函数时,您会复制该 vector 并将其传递给该函数。您向其中添加值,但实际上是在向拷贝添加值,当您返回时拷贝会被销毁。
你应该修改为
void Job::generirateActivities(vector<Job>& job_list) {
注意 vector 后面的 &
。
关于c++ - 尝试显示时 vector 中没有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37138262/