accessing c++ map
accessing c++ map
我试图为家庭作业创建一个地图,我在标题中声明了它,我试图访问它,但我一直得到错误。我不确定代码有什么问题。我将代码实现到load函数中,但我似乎无法让它在get函数中工作,如果你能帮助的话,谢谢
这是头文件
class Movies {
// data is private by default
Movie *movies;
int movieCnt;
map<string,**string> Mymap;
public:
Movies(string);
int getMovieCount() const;
const Movie * getMovie(string) const;
~Movies();
private:
void loadMovies(string);
int getMovieHash(string) const;
};
这是代码
const Movie * Movies::getMovie(string mc) const {
if(mc.length()==0)
return NULL; // not found
else
return &(Mymap.find(mc));
}
Movies::~Movies() {delete[] movies; movies = NULL;}
void Movies::loadMovies(string fn) {
ifstream iS(fn); // technically should be c_str
string s;
getline(iS, s); // skip heading
getline(iS, s);
movieCnt=0;
while(!iS.eof()) {
Movie* m = new Movie(s);
Mymap[(m->getTitle())] = *m;
movieCnt++;
getline(iS, s);
}
iS.close();
}
指针星号放错地方了。它应该是这样的:
map<string,string**> Mymap;
或者更像c++的
map<std::string, std::vector<std::vector<std::string>>> Mymap;
您的getMovie(string f)
函数可以这样改进:
const Movie Movies::getMovie(string mc) const
{
if(mc.length() > 0)
{
auto it = Mymap.find(mc);
if (it != Mymap.end())
return *it; //by value
}
else
throw std::runtime_error;
}
请更具体地说明你的错误。会发生什么呢?与此同时,看看这个:
const Movie * Movies::getMovie(string mc) const {
if(mc.length()==0)
return NULL; // not found
else
return &(Mymap.find(mc));
}
在return &(Mymap.find(mc));
中,你返回一个指向临时对象的指针,这是不太可能工作的。尝试返回对象本身,
const Movie Movies::getMovie(string mc) const {
if(mc.length()==0)
return NULL; // not found
else
std::map<string, string**>::const_iterator it = Mymap.find(mc);
Movie m = it*;
return m;
}
地图的值应该是一个Movie
对象
map<string, Movie> Mymap;
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 使用一个考虑到std::map中键值的滚动或换行的键
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 允许从 std::map 的密钥窃取资源?
- 有没有办法对std::unordered_set、std::unrdered_map、std::set、std::map
- 将重物插入std::map
- 使用通用值初始化 std::map,不重复
- 仅包含可移动 std::map 的类的移动构造函数不起作用
- C++:当所有条目都保证是唯一时,替代 std::map
- 使用模板化的键类型定义 std::map,该键类型基于作为参数接收的函数
- 如果 KEY 是 std::list 或 std::vector 而不是值,那么 std::map 的默认行为是什么?
- 使用字符数组作为 Map 中的键
- C++如何创建 std::map
- C++ equivalent to Java Map getOrDefault?
- 从其他容器中移动构造"std::map"
- 如何使用 uint64_t 键类型从 std::map<int, std::string> 返回值?
- 将 std::map::emplace 与返回 shared_ptr 的函数一起使用是否正确?
- C++中 std::map 的运行时复杂度是多少?
- 为什么在 std::map 上移动无法将元素从一个映射移动到另一个映射