std::vector包装器的构造函数
Constructor for wrapper around std::vector
我正试图用数据成员std::vector编写一个包装类。我的类的默认构造函数应该是什么样子的,这样我就可以在不出现超出范围错误的情况下完成以下操作:
Wrapper W;
W[0] = value; //overloaded index operator, forwards to the vector
在访问元素之前,必须调整向量的大小:
// in the class definition
std::vector vec;
T &operator[](typename std::vector<T>::size_type idx)
{
if (idx >= vec.size()) {
vec.resize(idx + 1);
}
return vec[idx];
}
编辑:现在是0
而不是i
,这是一个巨大的拼写错误。在这种情况下,您可以在适当的位置构建一个大小为1的向量:
std::vector<T> vec = std::vector<T>(1);
public:
T &operator[](typename std::vector<T>::size_type idx)
{
return vec[idx];
}
默认构造函数是不相关的。您的operator []
需要检查所提供的索引是否超出范围,并根据需要增大矢量。(我在这里假设"返回对vector<T>
的引用"是一个拼写错误,并且您希望在某个时刻转发到向量的operator[]
)。
相关文章:
- 线程构造函数周围的可变参数模板包装器无法编译
- 具有值包装器的可变参数模板构造函数的类构造函数优先级
- 无法理解包装类的构造函数的声明
- Boost Python - 用参数包装构造函数
- 标准库中是否有与 std::thread 的构造函数语义匹配的类型擦除函数包装器?
- 重构现有包装类,以使用与包装器本身相同的构造函数参数包装 T
- 如何为包装容器的模板类编写构造函数,其中容器可以是数组或向量
- SWIG - 如何使用采用'const double*'的构造函数将类包装为 python
- 将 C 结构工厂函数与其相应的 C++ 包装类构造函数合并
- 将C 模板构造函数包装在模板类中
- 如何声明包装器类型 X 的移动构造函数<T> noexcept 取决于is_nothrow_move_constructible<T>?
- 通过包装器对象的构造函数将依赖关系传递给包装器对象
- 如何使包装类将其构造函数参数转发到 std::vector 的构造函数?
- 通过c++中的包装器将arment列表传递给构造函数
- boost-python:如何提供自定义构造函数包装器函数
- std::vector包装器的构造函数
- SWIG 3使用模板化构造函数包装未模板化的类
- 用std::类似向量的构造函数对C数组进行Constexpr包装
- 如何在SWIG包装C++代码中向目标语言(特别是Python)添加替代构造函数
- 当<T> T 没有复制构造函数时,std::queue 的虚拟包装器不会编译