[英]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.