c++ - 如何限制C++ STL vector 的元素范围?

标签 c++ stl vector

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

我希望 vector 只能存储指定范围(或集合)中的数字。 一般来说,如何做到这一点?

特别是,我想将 vector 限制为只能存储单个数字。

所以,如果我执行 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; }
    ...
};

关于c++ - 如何限制C++ STL vector 的元素范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2630163/

相关文章:

c++ - 抛出异常时编译器错误

c++ - 错误 : '_mm_prefetch' was not declared in this scope

C++ 改变位图中的值

c++ - 如何通过它的第 0 个位置引用解析这个 vector

C++ 多态性与dynamic_cast和typeid

c++ - STL 容器适配器中的不一致

c++ - 我需要帮助将数组添加到 C++ 中的 vector

c++ - 不可调整大小的 vector/不可重新分配但可变成员的数组?

C++:头文件中结构的 vector

c++ - C++ unordered_map 的问题