vector pushback 加入一个结构,是传值还是传址
时间: 2024-03-20 13:39:54 浏览: 25
当使用 `push_back()` 函数将一个结构体添加到 vector 中时,实际上是将这个结构体的副本(也就是值)添加到 vector 中。因此,如果你修改 vector 中的某个结构体元素,不会影响原始的结构体值。
如果你想要在 vector 中存储结构体的指针而不是结构体本身,那么你需要将结构体的地址传递给 `push_back()` 函数。这样,你就可以通过指针修改原始的结构体值。
下面是一个例子,演示了如何将结构体的指针添加到 vector 中:
```c++
#include <iostream>
#include <vector>
using namespace std;
struct Person {
string name;
int age;
};
int main() {
vector<Person*> people;
Person person1 = {"Alice", 20};
Person person2 = {"Bob", 25};
people.push_back(&person1);
people.push_back(&person2);
// 修改原始结构体的值
people[0]->age = 21;
// 输出 vector 中的元素
for (int i=0; i<people.size(); i++) {
cout << people[i]->name << " " << people[i]->age << endl;
}
return 0;
}
```
输出结果为:
```
Alice 21
Bob 25
```
可以看到,通过将结构体的指针添加到 vector 中,我们可以修改原始结构体的值。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)