我今天遇到一个简单的问题,我意识到使用现代范围内的东西,也许还有<algorithm>
中的其他东西,必须有一种优雅的方式来用一行左右的距离来表达,而不是用六行来表示,但我不知道。
计算相邻差异:
std::vector<int> nums = {3841,16342,1941,31299,26416,11243};
auto it1 = std::begin(nums);
auto it2 = it1;
it2++;
std::vector<int> adjacent_diffs;
for (; it2 != std::end(nums); it1++,it2++) {
adjacent_diffs.push_back(*it2 - *it1);
}
这实际上不是更简洁或优雅:
auto diffop = [](int a,int b) { return b - a; };
std::vector<int> adjacent_diffs;
std::transform(std::begin(nums),std::end(nums) - 1,std::begin(nums) + 1,std::back_inserter(adjacent_diffs),diffop);