【发布时间】:2016-12-31 20:39:28
【问题描述】:
我想对包含指向另一个向量 int_vec 中的元素的 int 迭代器的向量 vec 进行排序。我想使用以下比较功能:it1
index[it1 - int_vec.begin()] < index[it2 - int_vec.begin()].
其中 index 是指定迭代器键的第三个向量。现在向量索引是 A 的构造函数的内部数组,而 int_vec 是类 A 的成员变量。我试图像这样传递一个匿名函数:
std::sort(vec.begin(),flow.end(), [&index,&edges](const int_iter it1 ,const int_iter it2) -> bool
{
index[it1 - int_vec.begin()] < index[it2 - int_vec.begin()];
})
但我收到一条错误消息,告诉我无法捕获成员对象。确切的错误信息是:
'this' cannot be implicitly captured in this context
index[it1 - int_vec.begin()] < index[it2 - int_vec.begin()];.
我也试图只声明一个外部比较函数,但我不清楚如何将两个固定值绑定到它(我读到了 boost::bind 看起来正好解决了这个问题,但我宁愿不下载附加库)。
【问题讨论】:
-
我想对包含 int 迭代器的向量 vec 进行排序,该迭代器指向另一个向量 int_vec 中的元素 -- 仅此一项是个坏主意,因为如果向量已调整大小。
-
但向量永远不会调整大小
-
那为什么是向量呢?使用
std::array。 -
'成员对象不能被捕获',听起来你需要捕获这个,
[this] -
请在您的问题中添加确切的错误消息。