什么可以防止vector<>
的子类化,并在必要时覆盖at()
或operator[]
来调整数组的大小?具体来说,我希望代码像这样工作:
MYvector<int> v;
v[3] = 1;
字符串
将等同于:
vector<int> v;
if ( v.size() <= 3 )
v.resize( 3 + 1 );
v[3] = 1;
型
我在很多年前研究过这个问题,得出的结论是vector<>
根本就不是为子类化而设计的,但现在我不记得最大的障碍是什么了。
要明确的是,如果基本上是一个新的虚拟方法要写,我会这样做,但如果我需要做几十个其他定义(朋友函数?迭代器?)。
方言可能是C17或C20,尽管讨论更早或更晚的方言或供应商方言也很有兴趣。
1条答案
按热度按时间wvmv3b1j1#
可以使用如下的类定义:
字符串
但是,显式地调整向量的大小可能比调用
operator[]
更好。自动调整大小可以屏蔽错误,而且新元素(自动调整大小后)由默认构造函数进行值初始化(但不是由用户显式初始化)