cuốn sách gpt4 ai đã làm

Truy cập tất cả các giá trị được trả về bởi multimap::equal_range từ multimap lồng nhau

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 11:36:59 28 4
mua khóa gpt4 Nike

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âu trả lời hay nhất

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;

}

Về c++ - truy cập tất cả các giá trị được trả về bởi multimap::equal_range từ multimap lồng nhau, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/22736564/

28 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress