使用结构体创建vector容器,如何添加数据
时间: 2024-04-16 18:27:48 浏览: 13
使用结构体创建vector容器,你可以按照以下步骤添加数据:
1. 首先定义一个结构体,例如:
```cpp
struct Person {
std::string name;
int age;
};
```
2. 创建一个vector容器来存储Person结构体的对象,例如:
```cpp
std::vector<Person> people;
```
3. 创建一个Person对象,并将其添加到vector中,例如:
```cpp
Person p1;
p1.name = "Alice";
p1.age = 25;
people.push_back(p1);
```
或者可以使用emplace_back函数直接在vector中构造对象,例如:
```cpp
people.emplace_back("Bob", 30);
```
这样就可以添加多个Person对象到vector容器中了。
相关问题
容器vector怎么给结构体类型元素定义,传入参数数据
定义 vector 存储结构体类型元素的方式与存储类类型元素的方式类似。首先需要定义一个结构体,然后在 vector 中指定该结构体类型为 vector 的元素类型。例如,定义一个存储结构体类型元素的 vector,可以按照以下方式进行:
```
struct MyStruct {
int data1;
double data2;
};
vector<MyStruct> myVector;
```
在这个例子中,我们定义了一个名为 MyStruct 的结构体,该结构体有两个成员变量:一个 int 类型的 data1 和一个 double 类型的 data2。然后,我们定义了一个名为 myVector 的 vector,其元素类型为 MyStruct。
如果要向 vector 中添加元素,可以使用 push_back 方法,例如:
```
MyStruct obj = {10, 3.14};
myVector.push_back(obj);
```
在这个例子中,我们首先创建了一个 MyStruct 的对象 obj,并将其 data1 成员设置为 10,data2 成员设置为 3.14,然后使用 push_back 方法将 obj 添加到 myVector 中。
当然,也可以直接在 push_back 方法中传入 MyStruct 类型的临时对象,例如:
```
myVector.push_back({20, 6.28});
```
这将创建一个临时对象,其 data1 成员设置为 20,data2 成员设置为 6.28,然后将其添加到 myVector 中。
查找姓名删除vector容器中一组数据
要通过姓名查找并删除vector容器中的一组数据,你可以使用以下步骤:
1. 创建一个结构体或类,其中包含需要存储的数据字段,例如姓名和其他相关信息。
2. 定义一个vector容器,其中元素的类型为上述结构体或类。
3. 使用循环从用户输入获取一组数据,并将其添加到vector容器中。
4. 提示用户输入要删除的姓名。
5. 使用迭代器遍历vector容器,查找并删除匹配的元素。
6. 输出删除后的vector容器。
下面是一个示例代码,演示如何通过姓名查找并删除vector容器中的一组数据:
```cpp
#include <iostream>
#include <vector>
#include <string>
struct Person {
std::string name;
// 其他相关信息
};
int main() {
std::vector<Person> people;
// 获取一组数据
std::cout << "输入数据(姓名):" << std::endl;
std::string name;
do {
std::getline(std::cin, name);
if (name != "")
people.push_back({name});
} while (name != "");
// 查找并删除指定姓名的数据
std::cout << "输入要删除的姓名:" << std::endl;
std::string targetName;
std::getline(std::cin, targetName);
auto it = people.begin();
while (it != people.end()) {
if (it->name == targetName)
it = people.erase(it);
else
++it;
}
// 输出删除后的vector容器
std::cout << "删除后的数据:" << std::endl;
for (const auto& person : people) {
std::cout << person.name << std::endl;
}
return 0;
}
```
在上述示例中,我们首先定义了一个名为Person的结构体,其中包含一个name字段和其他相关信息。然后,我们定义了一个vector容器,元素的类型为Person。
接下来,我们使用循环从用户输入获取一组数据,并将其添加到vector容器中。用户可以通过输入空行来结束输入。
然后,我们提示用户输入要删除的姓名,并使用迭代器遍历vector容器,查找并删除匹配的元素。使用erase函数删除元素后,我们需要更新迭代器,以确保不跳过后续元素。
最后,我们输出删除后的vector容器中的数据。
请注意,上述示例仅演示了通过姓名查找并删除数据的基本逻辑。你可以根据自己的需求进行修改和扩展。