與vector<int> someVector
一個例子,istringstream someStringStream
你可以這樣做:如何使用提取操作符(>>)和矢量<bool>?
for (int i=0; i < someVector.size(); i++) {
someStringStream >> someVector[i];
}
我知道vector<bool>
是一種高效的實現,並operator[]
返回參考對象。 對於這段代碼,我應該使用索引而不是迭代器,主要是爲了便於閱讀。 目前,我使用的是這樣的:
for (int i=0; i < someVector.size(); i++) {
bool temp;
someStringStream >> temp;
someVector[i] = temp;
}
是否有實現這種更直接的方式是什麼?
這不安全。如果operator >>失敗,那麼「value」將被初始化。要麼顯式檢查流狀態,要麼將std :: ios_base :: failbit或ORed到流的異常()。 –
@ArneVogel在C++ 11中進行了更改:如果提取失敗,則將值寫入零(請參閱http://en.cppreference.com/w/cpp/io/basic_istream/operator_gtgt)。但是,我同意在生產代碼中進行錯誤檢查是必要的。儘管如此,還有很多方法可以做到這一點。選擇一個不是問題的範圍,恕我直言。 – stefan