C++ 在C++;
我没有访问BOOST或STL的权限;我的结构和映射看起来类似于以下psuedo:C++ 在C++;,c++,struct,find,C++,Struct,Find,我没有访问BOOST或STL的权限;我的结构和映射看起来类似于以下psuedo: struct s_map_key{ int a; int b; bool operator<(const s_map_key& smk) const { if (a < smk.a) { return true; } else if (a == smk
struct s_map_key{
int a;
int b;
bool operator<(const s_map_key& smk) const
{
if (a < smk.a)
{
return true;
} else if (a == smk.a)
{
if (b < smk.b)
{
return true;
}
else if (b == smk.b)
{
return true;
}
}
return false;
}
};
int main(int argc, char* argv[])
{
std::multimap<s_map_key, std::string> myMap;
for(int i = 0; i <10; i++)
{
s_map_key smk;
smk.a = i;
smk.b = 2;
myMap.insert(std::make_pair(smk, "test"));
}
s_map_key smk;
smk.a = 3;
std::multimap<s_map_key, std::string>::iterator x = myMap.find(smk);
if(x != myMap.end())
{
std::cout << x->first.a <<std::endl;
std::cout << x->first.b <<std::endl;
}
return 0;
}
struct s\u map\u键{
INTA;
int b;
bool操作符操作符除非您想要建立2==smk的等价,如果(smk.a==2 | | smk.b==2 | | smk.a&smk.b==2),我建议将谓词设置为外部并使用std::find_if。如果将其设置为结构的一部分以便使用multimap的内部查找函数,则可以打开另一个编码器以不希望的方式使用谓词的大门。此外,内部查找函数将只返回匹配的第一个实例,而使用std::fi如果你想更新所有的实例,如果你想使用内部函数,那么你需要使用等量范围。< < /P> ERM,你使用的是<>代码> STD::MultIMAP < /C> >,你怎么能说你没有访问STL?标准线程库?如果你使用一个标准的C++系统,你就有了容器Tunl。原来的STL是一个库,它被改为C++标准库的一部分。我做了修改和执行,但仍然没有从地图中检索出我的项目。@ TathAMR:为我工作:-我还必须在查询之前初始化<代码> SMK。
else if (b == smk.b)
{
return false; // was true
}