【发布时间】:2021-04-01 21:20:43
【问题描述】:
我只是想通过字符串向量获取迭代器,将迭代器传递给“pos”并与 pos 处的值一起传输到另一个函数,但编译器告诉我在从 'const char*' 到 'size_t' 的 lambda 参数。我也为标题 stl_algo.h 得到了这个:
不匹配调用 '(prototype::Monitor::setOptions(size_t)::
) (const char&)' __f(__first);
#include <iostream>
#include <Windows.h>
#include <string.h>
#include <map>
#include <vector>
#include <algorithm>
#include <iterator>
#include <cstdio>
.
.
void setOptions(size_t id) {
switch(id){
case 0:
std::for_each(main_menu.lines.begin(), main_menu.lines.end(),[this](size_t pos){
this->setOption(pos, main_menu.lines[pos]);
});
break;
case 1:
break;
}
}
所有这些都在'this'引用的类中,并且setOption与setOptions不同。我在其他地方读到,如果它只是将字符串指针的迭代器转换为 int 应该没问题,我也看到过这样使用的示例。
我也知道这整件事可能不是最好的方法,但我刚接触 c++,我正在尝试使用我学到的一些东西。
Win10 64bit - gcc (MinGW.org GCC-6.3.0-1)
【问题讨论】:
-
您具体要问什么?看看
std::for_each的参考,它不是这样工作的。那里也有例子。基本上,lamda 将迭代范围的元素作为参数,而不是索引,而不是迭代器。
标签: c++ string c++11 vector lambda