Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C++;_C++_Struct_Find - Fatal编程技术网

C++ 在C++;

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

我没有访问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.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
        }