C++ 获取从映射到c+中向量的所有值的引用+;

C++ 获取从映射到c+中向量的所有值的引用+;,c++,dictionary,vector,reference,C++,Dictionary,Vector,Reference,我有一张地图,比如说map我的地图 t上下文包含一个成员errorResult。 我想将所有值的引用“TContext”的errorResult从MyMap分配给向量。如果不使用for循环就可以实现,那就更好了。向量中的元素必须是。C++引用不是赋值(这里指的是引用本身,而不是内容)。它们就像是 t*const < /Cord>指针,如果你愿意的话)。 因此,要么创建一个std::reference_wrapper的向量,要么只创建指针。您可以从这里开始 std::vector<const

我有一张地图,比如说
map我的地图
t上下文
包含一个成员
errorResult

我想将所有值的引用“
TContext
”的errorResult从
MyMap
分配给
向量
。如果不使用for循环就可以实现,那就更好了。

向量中的元素必须是。C++引用不是赋值(这里指的是引用本身,而不是内容)。它们就像是<代码> t*const < /Cord>指针,如果你愿意的话)。
因此,要么创建一个std::reference_wrapper的向量,要么只创建指针。

您可以从这里开始

std::vector<const int*> ordinals;
std::transform(MyMap.cbegin(), MyMap.cend(), std::back_inserter(ordinals),
               [](const std::pair<string, TContext>& c) -> const int* { return &(c.second.errorResult); });
std::向量序数;
std::transform(MyMap.cbegin(),MyMap.cend(),std::back_插入器(序数),
[](const std::pair&c)->const int*{return&(c.second.errorResult);});

如果你所说的引用是指引用,你可以使用std::reference_wrapper,正如m88所建议的那样,你的问题我不清楚,但听起来好像可以通过解决。你需要一个循环。无论您是将该循环隐藏在函数(如
std::tranform
)中,还是只编写基于范围的for循环,您仍然需要循环。如果您的意思是没有循环语法,那么为什么没有循环?ok,但任何方法都需要循环,除非您将密钥复制到另一个容器中。