c++映射容器[this]()
c++ map container [this] ()
我正在学习使用映射容器,我可以看到逻辑,我们可以在插入任何对象时定义键和值。我也知道我们可以用这些容器插入对,并且可以通过.first和.second访问内容。但是我不理解这段代码,如果可以的话,需要有人来启发我:
A级
#include"ClassB"
#include"ClassC"
class A
{
public:
template<typename T>
void foo1(classC::ID id);
private:
ClassB::Ptr someFunction(classC::ID id);
private:
//map
std::map<class::ID, std::function<classB::Ptr()>> mapName;
}
template<typename T>
void ClassA::foo1(classC::ID id)
{
mapName[id] = [this]() // <-------------- that [this]() ???
{ // Is this calling for that
// function<class::Ptr()> inside map??
//TODO
}
}
B.h类
#include"ClassC"
class B
{
typedef std::unique_ptr<ClassB> Ptr;
public:
classB(param1 from other classes , param2 from other classes);
....
}
C.h类
namespace States
{
enum ID
{
foo,
foo1,
...
}
}
感谢
在您的示例中,"奇怪的部分"实际上与映射和访问器无关。这个This{/*TODO*/}是一个C++lambda表达式-一个没有参数的简单函数,可以访问"This"指针。
在这个例子中,map的用法是完全有序的——您只需访问带有关键字[id]的元素(如果它不存在,则创建它),然后将lambda函数(值)分配给这个关键字。如果您查看映射的定义,您可以看到,值类型实际上是std::function。有关此模板的更多信息,请访问http://www.cplusplus.com/reference/functional/function/
相关文章:
- 表示"accepting anything for this template argument" C++概念的通配符
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 为什么使用 "this" 指针调用派生成员函数?
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 将函数类成员映射到类本身内部
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 使用std::函数映射对象方法
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++映射分割错误(核心转储)
- 内联映射初始化的动态atexit析构函数崩溃
- 使用"std::unordereded_map"映射到"std::list"对象
- 如何从多映射中删除特定的重复项
- 在未初始化映射的情况下,将值插入到映射的映射中
- QT通过C++添加映射QML项目
- 在c++中访问int到类对象的映射时出错
- 在C++中搜索嵌套多映射值
- 错误处理.将系统错误代码映射到泛型
- C++匿名结构作为std::映射值
- c++映射容器[this]()