gpt4 book ai didi

C++将常量添加到 vector 切片

转载 作者:太空宇宙 更新时间:2023-11-04 15:30:15 25 4
gpt4 key购买 nike

我知道使用 transform 我可以像这样向一些 vector 添加一个常量:

std::vector<int> a(3, 2);
std::transform( a.begin(), a.end(), a.begin(), std::bind2nd( std::plus<double>(), 1 ) );

我想知道如何修改 transform 以将常量添加到 vector 的某些切片 [index:end] 中,例如最后两个元素。

我可以用一个循环来完成,例如:

for (int i=1; i < a.size(); i++) {
a.at(i) += 1;
}

但也许有更好的选择

最佳答案

只是最后 N 个元素?使用反向迭代器:

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>

int main() {
std::vector<int> a(3, 2);
std::transform(a.rbegin(), std::next(a.rbegin(), 2), a.rbegin(),
[](auto n) { return n + 1; });

for (auto n : a) {
std::cout << n << '\n';
}
return 0;
}

(如果您出于某种原因需要更改 a 到没有随机迭代器的容器类型。)

关于C++将常量添加到 vector 切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55933886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com