gpt4 book ai didi

c++ - 如何在 C++ 中将列表存储在 map 中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:41:09 25 4
gpt4 key购买 nike

编辑:

如果您遇到这种情况,则混淆是与 xcode 调试器有关,而不是代码本身。代码没问题


C++ 新手,但不是编程新手。

我不明白为什么当我将这些值插入到 map 中时没有保存此列表的值。

主要.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;
}

电影院.cpp

#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;
}
}

电影院.h

#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

我的电影似乎已正确保存,但时间列表只是 printShowTimes 中的垃圾值,即使它们存在于 addMovie 函数中也是如此。

breakpoint in code

我觉得它与指针有关,但我对它们还不是很满意!

最佳答案

代码有效*

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

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";
}
}

注意 C++ 提供了 std::unordered_map ,这可能会满足您的需要(“查询电影并找到它的时间”),因为顺序似乎并不重要。


*但它以令人不安的方式使用指针。考虑在 Code Review 中发帖.

关于c++ - 如何在 C++ 中将列表存储在 map 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50165597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com