【发布时间】:2020-09-25 22:57:56
【问题描述】:
我看过其他帖子,但我正在尝试使用一些<algorithm> 方法来做到这一点。我有一个指向地图的指针,其中包含指向 BaseElement 类的指针向量的键,如下所示。
using ElementV = std::vector<std::shared_ptr<BaseElement>>;
using ElementM = std::map<int, ElementV>;
using SElementM = std::shared_ptr<ElementM>;
SElementM elements;
我想要做的是将每个向量 (ElementV) 作为值存储在地图 (ElementM) 中并填充一个大的 ElementV。我不想做深拷贝,只需通过 allElems 向量中的智能指针 (shared_ptr(BaseElement)) 访问原始元素。
以下是错误的,但给出了我正在尝试做的事情的想法。
ElementV allElems;
for (auto& index : indices) {
allElems = elements->at(index);
}
我怀疑我应该将lambas 与std::copy 一起使用,但无法使类似于以下内容的东西起作用,我认为这是因为迭代器。
std::copy(allElems.begin(), allElems.end(), [const elements &elems](std::vector<shared_ptr<BaseElement> &val) {
elems ...?
}
想法?
【问题讨论】:
-
copy 只移动到 existing 元素中 - 尝试使用
std::back_inserter来适应目标向量的结束迭代器以成为插入器。除此之外 - 通常我们需要更多信息来提供帮助,例如编译器错误消息、抛出的异常等等,以及可以运行...的完整(但最少)代码