结论:指针p指向vector的第0个元素 p = &v[0] 可以使用p[i]继续访问vector的其他元素,见test3
#include <vector>
#include <iostream>
/* 测试目的,指针p0指向vector的第0个元素 p = &v[0] 可以使用p[i]继续访问vector的其他元素,见test3
下面代码的输出结果都相同 */
using namespace std;
typedef struct Position
{
float x;
float y;
} position_t;
int main()
{
std::vector<position_t> t1;
for(int i=0;i<5;i++)
{
position_t p1;
p1.x = (float)i;
p1.y = (float)(i+1);
t1.push_back(p1);
}
std::cout << "======test1: orig vector=========\n";
for(int i=0;i<t1.size();i++)
{
std::cout << "x: " << t1[i].x << ", y: " << t1[i].y << std::endl;
}
/* 指向vector的指针 */
vector<position_t> * pv;
pv = &t1;
std::cout << "======test2: vector point=========\n";
for(int i=0;i<pv->size();i++)
{
std::cout << "x: " << pv->at(i).x << ", y: " << pv->at(i).y << std::endl;
}
/* 指向vector[0]的指针 */
position_t * p0;
p0 = &t1[0];
std::cout << "======test3: vector[0] point=========\n";
for(int i=0;i<t1.size();i++)
{
std::cout << "x: " << p0[i].x << ", y: " << p0[i].y << std::endl;
}
}
编译后输出:
g++ test_vector.cpp -o test
./test