包含 std::string 和 std::vector <Another_Struct>的映射
A map containing std::strings and std::vector<Another_Struct>
我简直是在砸我的脑袋,因为我的代码似乎无法工作。我有一个包含元素的结构体(称为结构体a)。
我有另一个结构体(B)看起来像这样:
struct B
{
std::string m_strID;
std::map<std::string, std::vector<A>> m_mmap;
std::map<std::string, std::vector<A>> m_mmap1;
B()
{
}
};
我正试图使用这个作为一个例子来填充地图(说b是b的实例和a类型的实例):
b[a[i].anElement].m_mmap[a[i].anElement].push_back(a[i]);
这是在一个for循环,我希望将添加到值(这是一个向量)的A
到映射的实例…但它不是,总是有一个元素在那里,即使我有672个实例,应该在里面:(((((有人帮助吗?
首先使用typedef:
struct B
{
std::string m_strID;
typedef std::vector<A> VectorOfA;
typedef std::map<std::string, VectorOfA> MyMap;
MyMap m_mmap;
MyMap m_mmap1;
B()
{
}
};
它不仅可以节省输入时间,还可以使你的程序更具可读性,更少出错。
填充:B b;
...
b.m_mmap[ aVariableOfTypeA[i].anElement ].push_back( aVariableOfTypeA[i] );
您说b是b类型的实例,因此没有理由将[]
应用于b,因为它不是数组也不是容器。
现在typedef
也可以帮助你理解你的代码是什么错了,为什么你只看到大小1:
B b;
std::cout << "size of map: " << b.m_mmap.size() << std::endl;
B::VectorOfA &vref = b.m_mmap[ somestring ];
std::cout << "size of vector:" << vref.size() << std::endl;
A &aref = v[0]; // first element
这段代码应该可以帮助您理解在
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 附加使用 Struct 作为"multikey"并将 std::vector 用作映射值的映射
- std::p riority_queue<struct with const member&> - 'operator =' 函数不可用
- 如何在struct上使用std :: unique_ptr
- C++ std::list with struct containing list with struct
- C++ 在"struct std::iterator_traits"中没有名为"value_type"的类型<int>
- 使用 boost.python 公开 std::vector<struct>
- 错误:未使用不完整的类型'struct std::hash<>'无效
- 'struct std::string'没有名为'c_string'的成员
- 当编译器看到 std::vector<Typo> 和 std::vector<struct 拼写错误时发出的诊断之间的差异背后的理由是什么>
- 使用 std::transform 将 std::vector<struct{key; val;}> 转换为 std::map<key, val>
- 将数据从struct二进制复制到std::vector
- 在std :: map中找到struct作为值
- 访问std :: list instruct struct诱导segfault
- 元素 std::vector <struct>的更有成效的段落
- std::以struct为键的映射未按预期工作
- std::int 和 struct 内存不足的映射 (std::Bad_alloc) c++
- 使用struct插入std::map失败,出现构造函数错误
- 为 std::vector <struct>创建一个 getter 函数
- 作为struct成员的Std::unordered_map的地址为0