我正在解决一个问题,我必须从更大的向量创建子向量。如果向量中的元素是连续的,我必须创建这些元素的向量。如果存在不连续的元素,则创建该单个元素的向量。我的逻辑如下
vector<int> vect;
for (int nCount=0; nCount < 3; nCount++)
vect.push_back(nCount);
vect.push_back(5);
vect.push_back(8);
vector<int>::iterator itEnd;
itEnd = std::adjacent_find (vect.begin(), vect.end(), NotConsecutive());
函子NotConsecutive
如下
return (int first != int second-1);
所以我期待它std::adjacent_find
会返回迭代器,以便我可以创建向量一{0,1,2,3}、向量二{5}和向量{8}。但我不确定是否有更简单的方法?
编辑:我忘了提到我 std::adjacent_find
在一个循环中
while(itBegin != vect.end())
{
itEnd = std::adjacent_find (vect.begin(), vect.end(), NotConsecutive());
vector<int> groupe;
if( std::distance(itBegin, itEnd) < 1)
{
groupe.assign(itBegin, itBegin+1);
}
else
{
groupe.assign(itBegin, itEnd);
}
if(boost::next(itEnd) != vect.end())
{
itBegin = ++itEnd;
}
else
{
vector<int> last_element.push_back(itEnd);
}
}
这有什么意义吗?