2011-01-25 22 views

Trả lời

3

Bạn có thể làm điều này - nhưng trước tiên bạn cần tự viết operator >> cho lớp cặp. Toán tử này là toàn bộ bí mật của cuộc gọi ở trên. Việc triển khai thực tế của nó phụ thuộc vào định dạng của các cặp int của bạn.

+0

: o thực sự? Tốt đẹp! Tôi nghĩ, điều này sử dụng .push_back hoặc một cái gì đó. +1 –

+0

bạn có thể đưa ra ví dụ về mã hoạt động không? cảm ơn rất nhiều –

+1

@Qiang Li: tầm thường. 'template istream & operator >> (istream & in, pair & val) {return in >> val.first >> val.second; } ' – ephemient

4

boost::zip_iterator có thể được sử dụng.

copy(boost::make_zip_iterator(
     boost::make_tuple(istream_iterator<int>(cin), 
          istream_iterator<int>(cin)), 
    boost::make_zip_iterator(
     boost::make_tuple(istream_iterator<int>(), 
          istream_iterator<int>()), 
    back_inserter(v)); 
+0

wow ... Thật buồn cười khi một ngôn ngữ cấp thấp như C++ là lần đầu tiên tôi gặp khái niệm này được thực hiện trong ... –

+0

+1 hôm nay tôi đã học về một thư viện C++ tuyệt vời mới. – wilhelmtell

+0

@Pavel: vì C++ là một cấp độ thấp, có thể mọi thứ đều có thể. Nó chỉ là thường bạn không biết nơi để tìm :) Mặt khác, 'zip' là khá nổi tiếng, đặc biệt là trong lập trình chức năng. –

Các vấn đề liên quan