繁体   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