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

标签 c++ vector addition

我知道使用 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/

相关文章:

c++ - Having trouble importing function from C++ dll 错误 LNK 2019

c++ - 模板类的赋值运算符

matlab - 为什么列向量在用于索引矩阵时返回行向量?

c++ - Gtkmm:将 RefPtr 与保存在 std::vector 中的小部件一起使用

jquery - 在 jQuery Serialize() 或 SerializeArray() 中向 Ajax POST 添加/push() 值

java - 如果语句运算符被忽略?

jquery - 如何使用 jQuery 添加和删除链接上的类?

c++ - 在 C++ 中限制 CPU 使用

python - 将数组从 C++ 返回到 Python

c++ STL vector 导致内存溢出?