c++ - 在 lambda 中捕获 vector 数组使元素常量

标签 c++ c++11

<分区>

#include <vector>                                                               

void main() {                                                                   
  std::vector<int> test[2];                                                     
  auto funct = [test](){ test[0].push_back(1); };                               
  funct();                                                                      
} 

结果我得到

main.cc:5:45: error: passing ‘const std::vector’ as ‘this’ argument of ‘void std::vector<_Tp, _Alloc>::push_back(std::vector<_Tp, _Alloc>::value_type&&) [with _Tp = int; _Alloc = std::allocator; std::vector<_Tp, _Alloc>::value_type = int]’ discards qualifiers [-fpermissive] auto funct = test{ test[0].push_back(1); };

如何捕获 test没有赋值的指针 const ?除了使它成为 vector<vector<int>> 之外还有其他方法吗? ?为什么它甚至变成了常量?

最佳答案

你可以试试这个。

#include <vector>                                                               

int main() {                                                                   
  std::vector<int> test[2];                                                     
  auto funct = [&test](){ test[0].push_back(1); };                               
  funct();
  return 0;                                                                      
} 

关于c++ - 在 lambda 中捕获 vector 数组使元素常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44386791/

相关文章:

c++11 - C++ 我是否总是必须使用 std::move 来调用 move 构造函数?

c++ - 标准库分区算法

C++ 并行矩阵乘法,计算不正确

c++ - CMake 中的 include_directories 和 target_include_directories 有什么区别?

c++ - 为什么 uniform_int_distribution<uintmax_t> 适用于 62 位数字但不适用于 63 或 64 位数字?

c++ - 在 C++11 中解析 int - stoi

c++ - 逻辑常数和物理常数

C++ - 在 foreach 中复制 vector 给出 "No matching function to call for std::vector<int>::push_back(std::vector<int>&)"

c++ - 当我取消注释移动构造函数 A(A&&) 时,下面的代码片段会发生什么?

c++ - 我们应该如何在函数中使用带有 std::accumulate 的模板来通过考虑模板而不是 "init"来返回正确的类型