Tôi đã khai báo một multimap chứa các chuỗi và bản đồ. Bản đồ chứa một chuỗi và một cặp số nguyên.
std::multimap>> thương nhân;
std::map> sản phẩm;
std::pair bên;
Tôi thêm các giá trị mới vào multimap này thông qua:
sản phẩm.emplace(stringValue1, std::pair(intValue1, intValue2));
Trader.emplace(stringValue2, Products);
Bây giờ, tôi có một vấn đề. Tôi đang cố gắng tìm các nhà giao dịch có cùng giá trị khóa và sau đó đọc giá trị liên quan cho từng nhà giao dịch được tìm thấy. Để tìm các nhà giao dịch có giá trị khóa nhất định, tôi đã sử dụng đoạn mã sau và nó đã hoạt động
std::cặp<
std::multimap>>::iterator,
std::multimap>>::iterator
> về lại;
ret = Trader.equal_range(stringKeyValue);
Tôi có thể truy cập giá trị (chuỗi) đầu tiên của multimap bằng mã sau
std::multimap>>::iterator itr1 = ret.first;
std::cout << " " << itr1->first << std::endl;
Nhưng tôi không thể truy cập bất kỳ phần tử nào khác của multimap. Nếu bạn xem phần khai báo nhiều bản đồ của tôi, tôi cần truy cập không chỉ chuỗi đầu tiên mà còn cả chuỗi thứ hai và một cặp số nguyên được liên kết với nhà giao dịch được trả về.
Tôi đã thử rất nhiều thứ khác nhau nhưng không cái nào hiệu quả và đầu tôi lúc này đang tan chảy. Tôi hy vọng bạn có thể giúp đỡ các bạn. Cảm ơn.
Có lẽ điều này sẽ giúp ích. Tôi chưa thử nó.
typedef std::map > TraderProductMap;
typedef std::multimap TraderMap;
typedef TraderProductMap::iterator TraderProductMapIter;
typedef TraderMap::iterator TraderMapIter;
phạm vi std::pair;
phạm vi = Trader.equal_range(stringKeyValue);
for(TraderMapIter itTrader = range.first;itTrader != range.second;++itTrader) {
std::cout << " " << itTrader->first << std::endl;
for(TraderProductMapIter itProduct = itTrader->second.begin();itProduct != itTrader->second.end();++itProduct) {
std::cout << " " << itProduct->first << " " itProduct->second->first << " " << itProduct->second->second << std::endl;
}
std::cout << std::endl;
}
Tôi là một lập trình viên xuất sắc, rất giỏi!