【发布时间】:2016-09-23 18:38:19
【问题描述】:
编辑:对不起,我没有给出任何结果。我希望删除 (10th, 11th),然后是 (20th, 21st),然后是 (30th, 31st) 等等,但我得到了这个 http://imgur.com/TbVmLo4
我有一个由几个相同大小的向量组成的向量,我想使用 remove if 和一个 lambda 函数 去除它们的部分末端,但似乎成为搬迁中的一个位移。这是我正在运行的代码:
#include <vector>
#include <numeric>
#include <iostream>
#include <algorithm>
#include <cctype>
#include <cmath>
#include <typeinfo>
int main()
{
int sizeOfSpectrum=10;
int desiredSizeOfSpectrum=8;
int count=-1;
std::vector<int> v(100);
std::iota (std::begin(v), std::end(v), 0);
auto newend=std::remove_if(v.begin(),v.end(),[&](int i)->bool{
count++;
int temp=count%sizeOfSpectrum;
bool test=(temp) > desiredSizeOfSpectrum;
return ( test);
});
v.erase(newend, v.end());
std::cout << "\n";
std::cout << "v[i]: \n";
for(int i : v)std::cout <<v[i]<<": ";
std::cout << "\n";
return 0;
}
【问题讨论】:
-
预期的输出是什么,你得到了什么?我们在这里谈论多少位移?
-
假设我有一个大小为 100 的向量,由大小为 10 的数据集组成(所以 10 个集合)。我希望删除每组的第 9 和第 10 个元素。但正如你所看到的,它删除了第 10 和第 11,然后是第 10 和第 22,而不是我预期的第 20 和第 21,我不知道这里发生了什么。 imgur.com/TbVmLo4
-
然后会发生什么?您打印的输出是什么?
-
我打印屏幕截图上的内容