C++ 为什么直接输出*Vector.end()-1会报错,但是加一个迭代器变量就能运行了

我在这里定义一个vector对象

vector<int> V = {012345};
//但是
cout << *V.end()-1;//会报错
//如果
vector<int>::iterator it;
it = V.end()-1;
cout << *it;//正常运行
为什么直接输出*V.end()-1会报错,但是加一个迭代器变量就能运行了

看看*和.的运算符优先级啊