vector存放不同类型的指针
时间: 2023-02-06 07:50:14 浏览: 79
vector 是一种常用的容器类型,它可以存放不同类型的指针。使用 vector 存放指针的方法是,首先声明一个 vector 变量,指定其中存放的元素类型为指针类型,然后使用 vector 的 push_back 方法将指针加入 vector 中。
例如,如果要在 vector 中存放 int 类型的指针,可以这样声明 vector 变量:
```
std::vector<int*> vec;
```
然后,就可以使用 push_back 方法将 int 类型的指针加入 vector 中:
```
int a = 10;
int* p = &a;
vec.push_back(p);
```
如果要存放其他类型的指针,例如 char 类型的指针,可以这样声明 vector 变量:
```
std::vector<char*> vec;
```
然后,就可以使用 push_back 方法将 char 类型的指针加入 vector 中:
```
char c = 'a';
char* q = &c;
vec.push_back(q);
```
通过这种方式,就可以在 vector 中存放不同类型的指针了。
相关问题
vector中存放的指针类型元素 如何排序
你可以使用标准库中的`std::sort`函数来对存放指针类型元素的vector进行排序。然而,需要注意的是,由于vector存放的是指针,而不是实际的对象,因此排序时实际上是对指针进行排序。
下面是一个示例代码,演示了如何对存放指针类型元素的vector进行排序:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
// 比较函数,用于指定排序的顺序
bool compareIntPointers(int* a, int* b) {
return *a < *b; // 根据指针所指向的值进行比较
}
int main() {
std::vector<int*> vec; // 存放指针类型元素的vector
// 向vector中添加元素
int a = 3, b = 1, c = 2;
vec.push_back(&a);
vec.push_back(&b);
vec.push_back(&c);
// 对vector中的元素进行排序
std::sort(vec.begin(), vec.end(), compareIntPointers);
// 输出排序后的结果
for (int* ptr : vec) {
std::cout << *ptr << " ";
}
return 0;
}
```
在上述示例代码中,我们定义了一个比较函数`compareIntPointers`,该函数接受两个指针参数,比较它们所指向的值的大小。然后,我们调用`std::sort`函数对存放指针类型元素的vector进行排序,并传入该比较函数作为排序的依据。最后,通过遍历排序后的vector并输出指针所指向的值,我们可以看到排序的结果。
请注意,在使用指针进行排序时,需要确保指针所指向的对象是有效的,并且不会在排序过程中被释放。
c++盛放函数指针的vector
C++中可以使用`std::vector`来存放函数指针。`std::vector`是一个动态数组,可以根据需要动态地增加或减少元素。
要存放函数指针的`std::vector`,首先需要定义函数指针类型。例如,如果要存放返回类型为`int`,参数为`int`的函数指针,可以使用以下方式定义函数指针类型:
```cpp
typedef int (*FunctionPtr)(int);
```
然后,可以创建一个`std::vector`对象,并将函数指针添加到其中。例如:
```cpp
std::vector<FunctionPtr> functionVector;
functionVector.push_back(&function1);
functionVector.push_back(&function2);
```
其中,`function1`和`function2`是两个函数指针。
要调用存放在`std::vector`中的函数指针,可以使用以下方式:
```cpp
int result = functionVector[index](argument);
```
其中,`index`是函数指针在`std::vector`中的索引,`argument`是传递给函数的参数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)