簡體   English   中英

如何限制C ++ STL向量的元素范圍?

[英]How to restrict the range of elements of C++ STL vector?

vector<int> l; 
for(int i=0;i<10;i++){ 
   l.push_back(i); 
} 

我希望向量只能存儲指定范圍(或集)中的數字。 一般來說,怎么辦呢?

特別是,我想限制向量只能存儲單個數字。

所以,如果我做l[9]++ (在這種情況下l[9]9 ),它應該給我一個錯誤或警告我。 (因為10不是一位數字)。 同樣, l[0]--應警告我。

有沒有辦法使用C ++ STL vector

另一種解決方案是創建自己的數據類型,提供此限制。 當我讀到你的問題時,我認為限制並不真正屬於容器本身,而是屬於你想要存儲的數據類型。 這種實現的示例(開始)可以如下,可能這樣的數據類型已經在現有庫中提供。

class Digit
{
private:
    unsigned int d;
public:
    Digit() : d(0) {}
    Digit(unsigned int d)
    {
        if(d > 10) throw std::overflow_error();
        else this->d=d; 
    }
    Digit& operator++() { if(d<9) d++; return *this; }
    ...
};

用另一個類包裝它:

class RestrictedVector{
private:
    std::vector<int> things;
public:
// Other things
    bool push_back(int data){
        if(data >= 0 && data < 10){
            things.push_back(data);
            return true;
        }
        return false 
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM