gpt4 book ai didi

c++ - std::map 以对象作为值

转载 作者:行者123 更新时间:2023-11-28 00:45:51 29 4
gpt4 key购买 nike

我在尝试将 std::map 与我自己的类作为值一起使用时出错。 map 的定义是这样的:

 std::map<std::string,CCrossSection> Xsects;

这一行编译得很好(所以它有点工作?)

Xsects[sectionId].m_vProfile.push_back(pt);

然而,当我尝试遍历 map 时:

for (std::map<std::string,CCrossSection>::iterator xs = Xsects.begin(); xs < Xsects.end(); xs++) {
it->second.SaveFile(f);
}

它给了我多个与此类似的错误:

error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)' : could not deduce template argument for 'const std::_Tree<_Traits> &' from 'std::_Tree<_Traits>::iterator'
with
[
_Traits=std::_Tmap_traits<std::string,CCrossSection,std::less<std::string>,std::allocator<std::pair<const std::string,CCrossSection>>,false>
]
c:\program files\microsoft visual studio 9.0\vc\include\xtree(1466) : see declaration of 'std::operator <'

我认为这是 less 运算符的问题,我将其添加到类 CCrossSection 的定义中,但它并没有改变任何事情。后来我读到 map 的键必须定义更少的运算符,我认为 std::string 有。知道为什么会这样吗?

干杯托梅克

最佳答案

当您将结束迭代器与运算符进行比较时,它会编译!=

关于c++ - std::map 以对象作为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16273449/

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