c++ struct vector
时间: 2023-08-27 08:20:18 浏览: 180
关于C++vector
在C语言中,使用结构体定义的vector是一种数据结构,它可以存储不同类型的元素,包括int、double、string等。结构体vector的定义需要注意,它应该是全局的,否则可能会出错。下面是一个简短的程序代码示例:
```c
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
typedef struct rect {
int id;
int length;
int width;
// 对于向量元素是结构体的,可以在结构体内部定义比较函数,按照id、length和width升序排序。
bool operator< (const rect &a) const {
if(id != a.id)
return id < a.id;
else {
if(length != a.length)
return length < a.length;
else
return width < a.width;
}
}
} Rect;
int main() {
vector<Rect> vec;
Rect rect;
rect.id = 1;
rect.length = 2;
rect.width = 3;
vec.push_back(rect);
vector<Rect>::iterator it = vec.begin();
cout << (*it).id << ' ' << (*it).length << ' ' << (*it).width << endl;
return 0;
}
```
此代码定义了一个名为rect的结构体,其中包含id、length和width三个成员变量。在main函数中,创建了一个vector容器vec,并向其中添加一个rect结构体。可以通过迭代器访问vector中的元素,并打印出id、length和width的值。
另外,如果想要强制释放STL Vector所占用的内存,可以使用swap方法。下面是一个ClearVector函数的模板示例:
```c
template <class T>
void ClearVector(vector<T>& v) {
vector<T> vtTemp;
vtTemp.swap(v);
}
```
可以使用类似以下的代码使用ClearVector函数:
```c
vector<int> v;
v.push_back(1);
v.push_back(3);
v.push_back(2);
v.push_back(4);
ClearVector(v); // 或者v.swap(vector<int>());
```
这样就可以强制释放v所占用的内存。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [c++中vector的用法详解](https://blog.csdn.net/qq_33263769/article/details/88714711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文