中出现编译错误
error: no match for ‘operator+’ (operand types are ‘std::vector<int>’ and ‘int’)
cout<<*(num+1)<<endl;
程序1:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> num;
//Enter the numbers
for(int i=0;i<10;i++)
num.push_back(i);
//Display address of first element using subscript
cout<<&num[1]<<endl;
return 0;
}
程式2:
所有代码都是相同的,除了我希望借助指针显示地址的下标位置。
//Display address of first element using pointer
cout<<*(num+1)<<endl;
我也尝试过
cout<<(num.begin()+1)<<endl;
,但显示相同的错误。
答案 0 :(得分:2)
a[b]
仅在应用于指针时才等效于*(a+b)
。 (以及数组,因为在这种情况下,它们会自动转换为指针。)
std::vector
不是指针。这是一个类(准确地说是一个类模板)。通常[]
在类上不起作用,但是std::vector
重载运算符[]
,这意味着它提供了一个特殊的成员函数,该函数在{{1} }。
但是[]
不会过载std::vector
,因此+
不能应用于向量。
如果您要编写自己的+
,则可以很容易地使vector
重载以使其表现出所需的行为。