首先,我是C++的新手,所以问题可能很愚蠢!
其次,我已经看到了相关的答案,可以得出结论, vector 的名称可以视为数组。
vector <int> myVector(7,10); // creates a vector of size 7 and initializes with 10
我们可以将名称myVector用作数组,并编写为myVector [0],myVector [1] ...
但是由于vector是一个类,而myVector是它的对象,因此该对象内部应该有一个存储区域,该存储区域可以被视为类似于myVector.someArray [0],myVector.someArray [1]的数组,而不是对象名称本身如何实现?
最佳答案
非常简单的重载运算符:
operator overloading
当您在类中定义这些方法时,就可以使用那些特殊的运算符;如标准所描述的那样,那些已经可以与原始数据类型一起使用的类型。
在 vector 的情况下,你有类似
...
const Element& operator[](const unsigned int index)
{
return internalArray[index];
}
...
在其类声明中。
您可以在
std::vector
类中找到类似的内容,因此,如果您愿意的话,甚至可以构建自己的 vector 类。为了澄清起见,如果一个类定义了
[]-Operator
,则可以对其对象执行以下操作:vec[4];
等效于:
vec.operator[](4);
这也意味着可以选择重载运算符的参数。您甚至可以将字符串传递给
[]
运算符。例如
std::map
可以很好地做到这一点:std::map -> Check out the example
关于c++ - vector 名称如何被视为数组名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61371677/