Tôi đã có một bản đồ :: có chứa một lớp và lớp đó có một id. Tôi có một id mà tôi đang cố gắng tìm thấy trong tập hợpC++ biểu thức lambda trong std :: find_if?
typedef std::set<LWItem> ItemSet;
ItemSet selectedItems;
LWItemID i = someID;
ItemSet::iterator isi;
isi = std::find_if(selectedItems.begin(), selectedItems.end(), [&a](LWItemID i)->bool { return a->GetID()==i; }
Tôi nhận được lỗi nói rằng biến chụp lambda không được tìm thấy, nhưng tôi không biết tôi phải làm gì để có được nó để nắm bắt nội dung của vùng chứa khi nó lặp qua. Ngoài ra, tôi biết rằng tôi không thể làm điều này với một vòng lặp, nhưng tôi đang cố gắng để tìm hiểu chức năng lambda.
Nơi mà bạn đã tuyên bố 'một '? Bạn đang tìm kiếm gì? 'map' hoặc' set'? –
'selectedItems' là một container' LWItem 's, do đó lambda không thể lấy' LWItemID' làm đối số. Nó phải lấy một câu lệnh 'LWItem' (có thể là' const & ') –
nếu nó có vẻ như là một câu hỏi ngu ngốc. Vấn đề chính của tôi dường như là tôi không chắc chắn làm thế nào để nắm bắt biến 'LWItem' cục bộ,' i' và phần tử được lặp lại thông qua 'std :: find_if'. –