如何通过另一个向量的值从一个向量中获取值?
How to get value from a vector by value from another vector?
我有两个向量:
一个包含事物的数字和名称;
second 收集已经显示给用户的数字;
我正在尝试制作已显示的所有对象的历史列表。
这是我的代码:
class palettArchive{
private:
std::vector<std::pair<int,std::string>> paletts;
int palletsCounter;
std::vector<int> choosen;
public:
//...
void history(){
auto printHist = [](int& i){
int tmp = i;
std::pair<int,std::string> tempPair = paletts[tmp];
std::cout << tempPair.first << " " << tempPair.second;
return 0;
};
std::for_each(choosen.begin(), choosen.end(), printHist);
}
};
出现错误:
error: 'this' cannot be implicitly captured in this context
std::pair<int,std::string> tempPair = paletts[tmp];
我不能用已经创建的列表创建第三个 vector
。我需要调用一个函数,然后打印出来。
lambda 必须 捕获 this
才能访问成员变量:
auto printHist = [this](int& i){ ... };
for_each
和 lambda 只会让你的生活变得困难。更简单的代码是显式迭代:
void history()
{
for (auto i : choosen) {
auto tempPair = paletts[i];
std::cout << tempPair.first << " " << tempPair.second;
// did you mean to send a newline "\n" also?
}
}
我有两个向量:
一个包含事物的数字和名称;
second 收集已经显示给用户的数字;
我正在尝试制作已显示的所有对象的历史列表。
这是我的代码:
class palettArchive{
private:
std::vector<std::pair<int,std::string>> paletts;
int palletsCounter;
std::vector<int> choosen;
public:
//...
void history(){
auto printHist = [](int& i){
int tmp = i;
std::pair<int,std::string> tempPair = paletts[tmp];
std::cout << tempPair.first << " " << tempPair.second;
return 0;
};
std::for_each(choosen.begin(), choosen.end(), printHist);
}
};
出现错误:
error: 'this' cannot be implicitly captured in this context
std::pair<int,std::string> tempPair = paletts[tmp];
我不能用已经创建的列表创建第三个 vector
。我需要调用一个函数,然后打印出来。
lambda 必须 捕获 this
才能访问成员变量:
auto printHist = [this](int& i){ ... };
for_each
和 lambda 只会让你的生活变得困难。更简单的代码是显式迭代:
void history()
{
for (auto i : choosen) {
auto tempPair = paletts[i];
std::cout << tempPair.first << " " << tempPair.second;
// did you mean to send a newline "\n" also?
}
}