重载时读取并插入到向量中 []
Reading and inserting into vector when overloading []
我正在尝试创建一个 ovreload 运算符 [] 的类。我的代码如下所示:
class DynamicArray{
public:
DynamicArray(){
}
double operator[](unsigned int i) const{
return values.at(i);
}
double &operator[](unsigned int i){
values.insert(values.begin()+i, ??? );
}
private:
vector<double> values;
}
我想这样称呼它(数组是动态数组的对象(:
cout << array[5];
这工作正常,但我也想做一些事情:
array[5] = 5.4;
但我不知道我怎么能做到这一点。(我知道我可以只使用矢量,但我需要在课堂上做很多东西(。 我的问题是 - 我如何更改第二个重载,以便它将值分配给向量中的索引?编辑:澄清一下:我不知道有多少值或将它放在哪里,所以我需要 ti 相应地调整大小。
你的非const
operator[]
函数应该这样写:
double & operator[](size_t index) {
if(index >= values.size())
values.resize(index + 1);
return values[index];
}
这应该传达您想要的语义。
编辑:我将支持评论中的建议,即使用std::map
或std::unordered_map
来表示这种数据结构,因为它允许您编写使用任意索引的代码,而不是被迫将所有内容存储在连续内存中,这是std::vector
的约束。但是我将把解决方案留在这里,因为将所有内容存储在连续内存中可能是一项设计要求(特别是如果,比如说,这是针对图形应用程序的(,所以在某些情况下,这样的解决方案是合乎逻辑的。
相关文章:
- 如何在向量数组中插入元素?
- 将一个向量插入另一个向量的某个位置
- 如何将整数向量值插入字符向量
- C++ 向量插入和迭代器混淆
- 如何将整数向量插入到键中,标准::映射的值
- 当类具有常量时,将对象插入到向量中
- 将向量插入到向量向量中
- C++ std::向量插入两个元素替代算法失败
- C++向量插入元素
- 我们可以使用Back() - 值索引在其上执行向量插入
- C++将向量插入到另一个覆盖向量中
- 如何将向量插入2D矢量的定义位置
- 不能使用 pimpl 习语将用户定义的向量插入到封装的向量中
- C :将向量插入地图
- c++11将向量插入到特定位置
- 向量::插入的异常安全保证是什么?
- C++ 向量插入和读取
- STL 向量插入 - 复制构造函数
- 哪一种方法是更快的向量(插入后排序)或集合
- 标准::向量插入的摊销分析