|  | 
 
| VC++如何将vector附加到另外一个同结构的vector中 在 C++ 中,可以使用 `std::vector` 的 `insert` 方法将一个 `std::vector` 附加到另一个同结构的 `std::vector` 中。下面是一个示例,展示了如何将一个 `std::vector` 附加到另一个同结构的 `std::vector` 中:
 
 复制代码
```cpp
#include <iostream>
#include <vector>
// 定义一个结构体
struct Person {
    std::string name;
    int age;
};
int main() {
    // 创建第一个vector并添加一些Person结构体实例
    std::vector<Person> people1 = {
        {"Alice", 30},
        {"Bob", 25}
    };
    // 创建第二个vector并添加一些Person结构体实例
    std::vector<Person> people2 = {
        {"Charlie", 35},
        {"David", 28}
    };
    // 使用insert方法将people2附加到people1
    people1.insert(people1.end(), people2.begin(), people2.end());
    // 输出结果以验证
    for (const auto& person : people1) {
        std::cout << "姓名: " << person.name << ", 年龄: " << person.age << std::endl;
    }
    return 0;
}
```
 
 ### 代码说明:
 
 1. **结构体定义**:我们定义了一个名为 `Person` 的结构体,包含 `name` 和 `age` 两个成员。
 2. **创建向量**:创建了两个 `std::vector<Person>`,分别命名为 `people1` 和 `people2`,并添加了一些 `Person` 实例。
 3. **附加向量**:使用 `insert` 方法将 `people2` 中的所有元素附加到 `people1` 中。`people1.end()` 表示在 `people1` 的末尾插入,`people2.begin()` 和 `people2.end()` 表示要插入的范围。
 4. **输出结果**:最后,遍历 `people1` 并输出每个 `Person` 的姓名和年龄,以验证结果。
 
 这样,你就可以将一个 `std::vector` 附加到另一个同结构的 `std::vector` 中。
 
 
  我们可以在插入之前检查姓名是否已经存在于目标 `std::vector` 中。如果不存在,则插入;如果存在,则跳过插入。以下是修改后的代码示例:
 
 复制代码
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 包含std::find_if
// 定义一个结构体
struct Person {
    std::string name;
    int age;
};
// 函数:检查姓名是否存在
bool nameExists(const std::vector<Person>& people, const std::string& name) {
    return std::any_of(people.begin(), people.end(),
        [&name](const Person& p) {
            return p.name == name;
        });
}
// 函数:将一个vector附加到另一个vector中,且不插入重复姓名
void appendUnique(std::vector<Person>& target, const std::vector<Person>& source) {
    for (const auto& person : source) {
        if (!nameExists(target, person.name)) {
            target.push_back(person);
        }
    }
}
int main() {
    // 创建第一个vector并添加一些Person结构体实例
    std::vector<Person> people1 = {
        {"Alice", 30},
        {"Bob", 25}
    };
    // 创建第二个vector并添加一些Person结构体实例
    std::vector<Person> people2 = {
        {"Charlie", 35},
        {"David", 28},
        {"Alice", 32} // 重复姓名
    };
    // 将people2附加到people1,且不插入重复姓名
    appendUnique(people1, people2);
    // 输出结果以验证
    for (const auto& person : people1) {
        std::cout << "姓名: " << person.name << ", 年龄: " << person.age << std::endl;
    }
    return 0;
}
```
 
 ### 代码说明:
 
 1. **姓名检查函数**:我们定义了一个名为 `nameExists` 的函数,用于检查给定姓名是否存在于 `std::vector<Person>` 中。
 2. **附加唯一元素的函数**:我们定义了一个名为 `appendUnique` 的函数,该函数将 `source` 向量中的元素附加到 `target` 向量中,前提是该元素的姓名在 `target` 中不存在。
 3. **主函数**:在主函数中,我们创建了两个 `std::vector<Person>`,并调用 `appendUnique` 函数将 `people2` 附加到 `people1` 中,且不插入重复的姓名。
 
 这样,只有在姓名不重复的情况下,才会将 `source` 向量中的元素添加到 `target` 向量中。
 
 
 
 
 
 
 
 | 
 |