c++ - 在不先插入标准 map 元素的情况下调用函数

标签 c++ dictionary std

下面的代码可以吗?

class A
{
  public:
    A();
    void foo();
};

map<int,A> m;
m[0].foo();

或者我必须执行以下操作:

map<int,A> m;
m[0] = A();
m[0].foo();

还有,我可以这样做吗:

map<int,A> m;
A a = m[5];

通过引用访问怎么样:

void foo(A & a);
map<int,A> m;
foo(m[5]);

最佳答案

map::operator [] 将在运行时创建一个新值(如果它尚不存在)。因此,您的所有代码示例都可以正常工作。

也就是说,这个例子:

 map<int,A> m;
 m[0] = A(); // redundant
 m[0].foo();

因为第二行是多余的,所以有点矫枉过正。

关于c++ - 在不先插入标准 map 元素的情况下调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1639914/

相关文章:

c++ - 如何将int转换为char C++

c++ const_cast<char*> 在 2 个 64 位 ms 操作系统上的相同二进制不同结果

python - python字典中某个键中的任何值

c++ - std::function std::bind with lambda 重载歧义

c++ - 传递指针 - 用于写入流

c++ - Visual Studio (C++) 中无法识别的语法

python - 将一系列字典转换为 DataFrame - Pandas

python - Python 中将 (key, value) (key, value) 映射到 (key, (value1, value2))

c++ - 那么是什么将 emplace(c.end(),_1) 与 emplace_back(_1) 区分开来呢?

c++ - 如何在不使用循环或 std::accumulate() 的情况下计算 vector 的总和?