文章目录
一、指向vector的指针1.&:指向栈上的vector(1)形式(2)局部变量自动释放(3)区分误区
2.new:指向堆上的vector(1)形式(2)除非主动释放,数据不会消失
二、指向vector的指针数组1.p[i]:指向栈上的vector(1)形式(2)局部变量自动释放
2.p[i]:指向堆上的vector(1)形式(2)除非主动释放,数据不会消失
三、vector内是指针元素1.栈
一、指向vector的指针
1.&:指向栈上的vector
(1)形式
指向一个栈上的vector变量,栈上的变量会因为{}范围的不同而被自动释放(所谓的局部变量)。
对应vector的所有的五种构造:
https://blog.csdn.net/sandalphon4869/article/details/94589399#1_15
#include
#include
using namespace std;
int main()
{
vector k{ 1,2,3 };
//vector* p=&k;
vector* p;
p = &k;
for (int i = 0; i size(); i++)
{
cout
vector k{ 1,2,3 };
p = &k;
}
for (int i = 0; i size(); i++)
{
cout 1,2,3 };
vector k{ 4,5,6 };
p = &k;
for (int i = 0; i size(); i++)
{
cout 1,2,3 };
{
vector k{ 4,5,6 };
p = &k;
}
for (int i = 0; i size(); i++)
{
cout 1,2,3 };
for (int i = 0; i size(); i++)
{
cout
cout
cout
p = new vector{ 1,2,3 };
}
for (int i = 0; i size(); i++)
{
cout 1,2,3 }, b{ 4,5,6 }, c{7,8,9,10};
//写法1
vector* p[3] = { &a,&b,&c };
/*
//写法2
vector* p[3];
p[0] = &a, p[1] = &b, p[2] = &c;
*/
for (int i = 0; i
cout
vector a{ 1,2,3 }, b{ 4,5,6 }, c{ 7,8,9,10 };
p[0] = &a, p[1] = &b, p[2] = &c;
}
for (int i = 0; i
cout 1,2,3 };
p[1] = new vector(3);
p[2] = new vector(4, 1);
for (int i = 0; i
cout
p[0] = new vector{ 1,2,3 };
p[1] = new vector(3);
p[2] = new vector(4, 1);
}
for (int i = 0; i
cout
int a = 1, b = 2, c = 3;
v.push_back(&a);
v.push_back(&b);
v.push_back(&c);
}
for (int i = 0; i |