c++ - 尝试显示时 vector 中没有值

标签 c++ vector

我在当前的项目中遇到了一些问题。我有作业类,它们保存在 vector 中。当我尝试 push_backpop_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/

相关文章:

c++ - 排序 vector 不起作用

c++ - 结构中二维数组的动态内存分配

c++ - 使用静态指针来管理类内存?

r - 更改元素 1 的位置 :2 in a vector

从 C++ 转换的 C# 代码不起作用

c++ - Vortex86DX C++ 代码/工具链构建上的非法指令

C++ std::shared_ptr 用法和信息

c++ - 为什么 shared_ptr 引用计数对象也需要跟踪指向该对象的 weak_ptr 上的数字?

c++ 20如何制作一个像容器一样的约束元组,它只包含允许的类型和它自己的一个实例

c++ - 从文本文件读取 float 并复制到 float vector