#include <iostream>
#include <vector>
#include <stdio.h>
using namespace std;
int main()
{
int a = 2;
int b = 2;
std::vector<int> c;
std::vector<int*> d;
c.push_back(a);
c.push_back(b);
d.push_back(&a);
d.push_back(&b);
for(int i = 0;i < c.size();i++){
printf("i p is %p\n",&(c[i]));
}
for(auto & e : c){
printf("e p is %p\n",&e);
}
for(auto k : c){
printf("k p is %p\n",&k);
}
printf("\n");
printf("a p is %p\n",&a);
printf("b p is %p\n",&b);
for(int i = 0;i < d.size();i++){
printf("i dp is %p\n",(d[i]));
}
for(auto & e : d){
printf("e dp is %p\n",e);
}
for(auto k : d){
printf("k dp is %p\n",k);
}
std::cout<<"c size is "<<c.size()<<std::endl;
std::cout<<"c size is "<<c.capacity()<<std::endl;
std::cout<<"d size is "<<d.size()<<std::endl;
std::cout<<"d size is "<<d.capacity()<<std::endl;
std::vector<int>().swap(c);
std::vector<int*>().swap(d);
printf("\n");
printf("final a p is %p\n",&a);
printf("final b p is %p\n",&b);
std::cout<<"c size is "<<c.size()<<std::endl;
std::cout<<"c size is "<<c.capacity()<<std::endl;
std::cout<<"d size is "<<d.size()<<std::endl;
std::cout<<"d size is "<<d.capacity()<<std::endl;
cout << "Hello World";
return 0;
}
i p is 0x1f95e90
i p is 0x1f95e94
e p is 0x1f95e90
e p is 0x1f95e94
k p is 0x7fff019c3ddc
k p is 0x7fff019c3ddc
a p is 0x7fff019c3e2c
b p is 0x7fff019c3e28
i dp is 0x7fff019c3e2c
i dp is 0x7fff019c3e28
e dp is 0x7fff019c3e2c
e dp is 0x7fff019c3e28
k dp is 0x7fff019c3e2c
k dp is 0x7fff019c3e28
c size is 2
c size is 2
d size is 2
d size is 2
final a p is 0x7fff019c3e2c
final b p is 0x7fff019c3e28
c size is 0
c size is 0
d size is 0
d size is 0
Hello World
对象的请看这里https://blog.csdn.net/Virtual_Func/article/details/49559503
可以自己手动实现看结果