キーが存在しない場合、 std::map operator[] がオブジェクトを作成することをここで読みました!
まず、この主張の参考文献がどこにあるのか教えていただけますか? (それが真実であることはわかっていますが)
次に、次のコード スニペットを想像してください。
#include <iostream>
#include <vector>
#include<map>
class Value {
//..
int some_member; //is used for any purpose that you like
std::vector<int> some_container;
public:
Value(int some_member_) :
some_member(some_member_) {
std::cout << "Hello from the one-argument constructor" << std::endl;
}
Value() {
std::cout << "Hello from the no argument constructor" << std::endl;
}
void add(int v) {
some_container.push_back(v);
}
int getContainerSize()
{
return some_container.size();
}
//...
};
//and somewhere in the code:
class A {
public:
std::map<int, Value> myMap;
void some_other_add(int j, int k) {
myMap[j].add(k);
}
int getsize(int j)
{
return myMap[j].getContainerSize();
}
};
//and the program actually works
int main() {
A a;
std::cout << "Size of container in key 2 = " << a.getsize(2) << std::endl;
a.some_other_add(2, 300);
std::cout << "New Size of container in key 2 = " << a.getsize(2) << std::endl;
return 1;
}
出力:
Hello from the no argument constructor
Size of container in key 2 = 0
New Size of container in key 2 = 1
上記の出力から、引数のないコンストラクターが呼び出されていることがわかります。
私の質問は:マップの Value(s) の引数が 1 つのコンストラクターを呼び出す方法はありますか?
ありがとうございました