如何通过另一个向量的值从一个向量中获取值?

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?
    }
}