vectorから取得したbegin()やend()についてiteratorと同様に扱えないのは仕様でしょうか。

class Hoge{
int hogehoge;
public:
Hoge(int hogehoge){this->hogehoge = hogehoge;}
int getHogehoge(){return hogehoge;}
}

int main(){
Hoge hoge1(1);
Hoge hoge2(2);

std::vector<Hoge> vhoge;
vhoge.push_back(hoge1);
vhoge.push_back(hoge2);

std::cout << *(vhoge.begin()).getHogehoge(); <-この辺が上手くいかない
std::cout << *(--vhoge.end()).getHogehoge(); <-
}

例えばvectorの先頭要素と終端要素を比較したい場合にこういうのを使いたいのですが、
うまくコンパイルできません(getHogehoge()などというメソッドは無いと言われる)。
環境はcygwin g++です。解決策等あればよろしくお願いします。