指针与数组,该怎么解决

指针与数组
struct AB
{
int a;
int b;
};
AB * ab = new AB[3];
vector<AB> ab_vector;
for (int i = 0;i < 3;i++)
{
ab[i].a = 0;
ab[i].b = 0;
}
for (int i = 0;i < 3;i++)
{
ab_vector.push_back(ab[i]);
}
delete[]ab;
for (int i = 0;i < 3;i++)
{
cout<<"ab_vector[i].a="<<ab_vector[i].a<<endl;
cout<<"ab_vector[i].b="<<ab_vector[i].b<<endl;
}
return 0;
错误 18 error C2228: “.b”的左边必须有类/结构/联合 g:\森林树木提取\a\a\a.cpp 86 1 A
请教各位,这种错是怎么回事啊?应该怎么改?谢谢!!!
------解决思路----------------------
#include<iostream>
#include<vector>
using namespace std;

int main(){
struct AB
{
int a;
int b;
};
AB * ab = new AB[3];
vector<AB> ab_vector;
for (int i = 0; i < 3; i++)
{
ab[i].a = 0;
ab[i].b = 0;
}
for (int i = 0; i < 3; i++)
{
ab_vector.push_back(ab[i]);
}
delete[]ab;
for (int i = 0; i < 3; i++)
{
cout << "ab_vector[i].a=" << ab_vector[i].a << endl;
cout << "ab_vector[i].b=" << ab_vector[i].b << endl;
}
return 0;
}

VS2013下编译运行结果:
指针与数组,该怎么解决