[英]Standard way of getting a non-specialized std::vector<bool> container
是否有一種標准的方法(或至少是半標准的,在所有流行的編譯器中實現)來獲得非專業的,非優化的,連續的std::vector<bool>
容器?
我有一些處理std::vector
的通用代碼,它假設它們都是這樣的標准連續容器。 我目前的解決方法是使用std::vector<int>
,它只存儲0和1,這是我想要的內容,但擁有正確的矢量類型會更好。
作為解決方法,您可以使用其他類型,請記住char
。 否則你可以在bool
周圍寫一個包裝器,例如:
struct my_bool
{
operator bool() const { return b; }
operator bool&() { return b; }
bool b;
};
通常,使用std::vector<bool>
專業化並不是一種好的做法,當然也不例外。 主要是因為它的接口與主std::vector<T>
接口不同,這會引起很多混亂。
這種不規則性在一些在網絡上松散的出版物中被提及。 最近的一個和恕我直言,一個很好的閱讀是由Howard Hinnant寫的,即在vector<bool>
。
事實上,前一段時間有人建議將其從標准N1185中刪除 ,但由於向后兼容性問題而被拒絕。
大多數提出的半標准替代方案是使用std::vector<unsigned char>
或std::vector<char>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.