vector插入结构体一
时间: 2023-07-23 15:59:50 浏览: 61
个常见的方法是使用`std::vector`的`push_back`函数。下面是一个示例代码:
```cpp
#include <iostream>
#include <vector>
struct MyStruct {
int id;
std::string name;
};
int main() {
std::vector<MyStruct> myVector;
MyStruct s1;
s1.id = 1;
s1.name = "John";
myVector.push_back(s1);
MyStruct s2;
s2.id = 2;
s2.name = "Jane";
myVector.push_back(s2);
for (const auto& s : myVector) {
std::cout << "ID: " << s.id << ", Name: " << s.name << std::endl;
}
return 0;
}
```
这段代码创建了一个`std::vector`,其中存储了一个名为`MyStruct`的结构体的实例。通过调用`push_back`函数,我们可以将新的结构体实例添加到向量中。最后,我们使用一个循环来遍历并打印向量中的结构体内容。
请注意,这只是一种常见的方法,还有其他方法可以实现向`std::vector`中插入结构体。
相关问题
vector 结构体
vector 是 C++ STL 中的一个容器,可以看作是一个动态数组。它可以自动调整大小,支持随机访问,插入和删除元素等操作。
vector 的定义方式如下:
```c++
#include <vector>
using namespace std;
vector<int> vec; // 定义一个空的 vector
vector<int> vec2(10); // 定义一个大小为 10 的 vector,每个元素都是默认值 0
vector<int> vec3(5, 2); // 定义一个大小为 5 的 vector,每个元素都是值为 2
```
可以使用 push_back() 函数向 vector 中添加元素:
```c++
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
```
可以使用下标运算符 [] 或者 at() 函数访问 vector 中的元素:
```c++
cout << vec[0] << endl; // 输出 1
cout << vec.at(1) << endl; // 输出 2
```
c++ map 自定义结构体值排序
在C++中,使用STL库中的map容器可以方便地实现键值对的映射。但是,当要按照自定义结构体的某个属性进行排序时,需要使用自定义排序函数。
假设我们有以下结构体:
```
struct Student {
string name;
int age;
};
```
我们使用map存储学生信息,其中键为学生姓名,值为学生结构体类型。如果要按照学生年龄从小到大排序,可以通过定义一个自定义排序函数来实现,如下:
```
bool cmp(const pair<string, Student>& p1, const pair<string, Student>& p2) {
return p1.second.age < p2.second.age;
}
```
其中,pair<string, Student>表示map中的一个键值对,p1.second.age表示p1中存储的学生信息的年龄属性。该函数返回true表示p1 < p2,返回false表示p1 >= p2。
然后,在插入map元素时,使用sort函数和自定义排序函数即可实现排序:
```
map<string, Student> m;
// 插入元素...
vector<pair<string, Student>> vec(m.begin(), m.end());
sort(vec.begin(), vec.end(), cmp);
```
其中,vec是一个键值对pair的vector类型,可以直接使用sort函数排序,然后再将排序后的结果存入map即可。
总之,使用自定义排序函数可以方便地对map中的结构体类型的值实现排序功能。