无法从功能插入std :: map

时间:2019-10-14 23:53:55

标签: function class c++14 stdmap

我正在尝试根据是否满足某些参数,将项目添加到作为类中私有变量的地图中。当我尝试对std::map[]运算符使用插入函数时,什么也没发生。我什至没有出错。在调试期间,代码像一切正常一样执行,但是映射保持为空。

我尝试了多种插入地图的方法,包括[]运算符和不同的插入参数。

    class foo {
    private:
       std::map<std::string, int> map;

    public:
       void bar();
    };

在cpp文件中:

    void foo::bar() {
       if(condition)
            map.insert(std::make_pair("string", 1));
    }

在编译器中或调试期间没有错误消息或警告。

1 个答案:

答案 0 :(得分:-1)

如果基本的STD映射用法可行,那么问题可能出在您的condition实现上

    #include <iostream>
    #include <map>

    class Foo {
      std::map<std::string, int> map;

     public:
      void bar();
      void print();
    };

    void Foo::bar() {
      // if (condition) // weird condition causing failure
      map.insert(std::make_pair("string", 1));
    }

    void Foo::print() {
      std::cout << map.size() << std::endl;
      std::cout << map.at("string") << std::endl;
    }

    int main(void) {
      Foo foo;

      foo.bar();
      foo.print();
    }