C++ 如何在c++;?

C++ 如何在c++;?,c++,stl,std,C++,Stl,Std,编辑: 如果您遇到这种情况,混淆的是xcode调试器,而不是代码本身。代码很好 < >新建为C++,但不为编程。< /P> 我不明白为什么在我将此列表的值插入地图时没有保存它们 main.cpp #include <iostream> #include <string> #include <memory> #include <list> #include <map> #include "Movie.h" #include "Date

编辑:

如果您遇到这种情况,混淆的是xcode调试器,而不是代码本身。代码很好


< >新建为C++,但不为编程。< /P> 我不明白为什么在我将此列表的值插入地图时没有保存它们

main.cpp

#include <iostream>
#include <string>
#include <memory>
#include <list>
#include <map>

#include "Movie.h"
#include "Date.h"
#include "Cinema.h"

using namespace std;

int main()
{
    Cinema cinema;

    string name = "transformers";
    Movie * transformers = new Movie(name, 2018, 6, 10);
    list<int> times;
    times.push_front(1200);
    times.push_front(1600);

    cinema.addMovie(transformers, times);

    cinema.printShowTimes(transformers);

    return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括“Movie.h”
#包括“Date.h”
#包括“Cinema.h”
使用名称空间std;
int main()
{
电影院;
string name=“transformers”;
电影*变形金刚=新电影(名称,2018,6,10);
列出时间;
次。向前推(1200);
次。向前推(1600);
电影院。addMovie(变形金刚、泰晤士报);
电影。印刷版放映时间(变形金刚);
返回0;
}
电影院

#include "Cinema.h"
#include "Movie.h"

using namespace std;

Cinema::Cinema() {
}

void Cinema::addMovie(Movie * movie, list<int> & movie_time) {
    running_movies.push_front(movie);
    movie_times.insert(pair< Movie *, list<int> >(movie, movie_time));
}

void Cinema::printShowTimes(Movie * movie) {
    MovieMap::iterator it = movie_times.find(movie);

    if(it != movie_times.end()) {
        list<int> times = it->second;
    }
}
#包括“Cinema.h”
#包括“Movie.h”
使用名称空间std;
电影院{
}
无效电影院::添加电影(电影*电影、列表和电影时间){
运行电影。向前推(电影);
电影时间。插入(成对<电影*,列表>(电影,电影时间));
}
无效电影院::打印放映时间(电影*电影){
电影地图::迭代器it=movie_times.find(电影);
if(it!=movie_times.end()){
列表次数=它->秒;
}
}
电影院

#ifndef CINEMA_H
#define CINEMA_H

#include "Movie.h"
#include <list>
#include <map>

typedef std::map< Movie *, std::list<int> > MovieMap;
typedef std::list< Movie * > MovieList;

class Cinema
{
  public:
    Cinema();
    Cinema(Cinema &);
    void addMovie(Movie *, std::list<int> &);

    void movieRunningAt(Movie &, std::list<int> &);
    void printShowTimes(Movie *);

  private:
    MovieList running_movies;
    MovieMap movie_times;
};

#endif
\ifndef电影院
#定义电影院
#包括“Movie.h”
#包括
#包括
typedef std::mapMovieMap;
typedef std::listMovieList;
班级影院
{
公众:
电影();
电影院&;
void addMovie(电影*,标准::列表&);
void movierunning(电影和,标准::列表和);
无效打印放映时间(电影*);
私人:
导演电影的电影人;
电影地图电影时代;
};
#恩迪夫
看起来我的电影被正确保存了,但是时间列表只是printShowTimes中的垃圾值,即使它们存在于addMovie函数中

我有一种感觉,这与指针有关,但我对它们还不是很满意

代码有效*

让您的函数打印这些值,您将看到您将获得所需的输出:

void printShowTimes(Movie * movie) {
    MovieMap::iterator it = movie_times.find(movie);

    if(it != movie_times.end()) {
        list<int> times = it->second;
        for (auto v : times)
            std::cout << v << "\n";
    }
}
void printShowTimes(电影*电影){
电影地图::迭代器it=movie_times.find(电影);
if(it!=movie_times.end()){
列表次数=它->秒;
用于(自动v:次)

std::我不能肯定你能得到正确的答案,谢谢你的帮助。调试器非常有用。。