看板 C_and_CPP 關於我們 聯絡資訊
一般我們要讀進輸入行的每一行至 vector 中,都是用 string line; vector<string> vs; while (getline(cin, line)) vs.push_back(line); 以下是用 istream_iterator 的另類寫法: // get all lines into vector from istream using iterator // by KhoGuan Phuann #include <iostream> #include <iterator> #include <vector> using namespace std; class Line { string line_; public: const string& line() const { return line_; } string& line() { return line_; } }; inline istream& operator>> (istream& is, Line& line) { return getline(cin,line.line()); } inline ostream& operator<< (ostream& os, const Line& line) { return os << line.line(); } typedef istream_iterator<Line> isit_line; typedef ostream_iterator<Line> osit_line; // 以上的 class/function/typedef 定義可寫入 .h 檔中,方便以後再使用 int main() { // 要用時,就用這樣一行 vector<Line> all((isit_line(cin)),isit_line()); // 測試從最後一行開始印,也是一行碼 copy(all.rbegin(), all.rend(), osit_line(cout, "\n")); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.208.166 ※ 編輯: khoguan 來自: 220.130.208.166 (06/14 11:04)