c++ vector容器里存放比较复杂的结构体数据,怎么初始化
时间: 2023-10-19 17:06:35 浏览: 178
可以使用以下方法初始化一个存放复杂结构体的vector容器:
1. 使用默认构造函数初始化vector容器,然后使用push_back()方法添加结构体数据。
```
struct MyStruct {
int a;
string b;
};
vector<MyStruct> myVector;
MyStruct s1 = {1, "hello"};
MyStruct s2 = {2, "world"};
myVector.push_back(s1);
myVector.push_back(s2);
```
2. 使用列表初始化vector容器。
```
vector<MyStruct> myVector = {
{1, "hello"},
{2, "world"}
};
```
3. 使用emplace_back()方法添加结构体数据。
```
vector<MyStruct> myVector;
myVector.emplace_back(1, "hello");
myVector.emplace_back(2, "world");
```
相关问题
c++ vector可以存放负数吗
是的,C++ 的 vector 容器可以存放负数。vector 是一个动态数组,可以存储任意类型的元素,包括整数、浮点数、字符等。你可以使用 vector<int> 来存储整数,其中包括负数。例如:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> nums;
nums.push_back(10);
nums.push_back(-5);
nums.push_back(0);
for (int num : nums) {
std::cout << num << " ";
}
return 0;
}
```
运行上面的代码会输出:10 -5 0,其中包括了一个负数 -5。
C++ 在容器中存放函数指针
在C++中,可以使用STL容器来存放函数指针。具体方法如下:
1.使用std::function代替函数指针,因为std::function可以存储任意可调用对象,包括函数指针。
2.定义一个容器,比如std::vector<std::function<void()>>来存储函数指针。
3.将函数指针转换成std::function类型,并将其添加到容器中。
下面是一个简单的示例代码:
```c++
#include <iostream>
#include <vector>
#include <functional>
void foo() {
std::cout << "foo()" << std::endl;
}
void bar() {
std::cout << "bar()" << std::endl;
}
int main() {
std::vector<std::function<void()>> func_vec;
func_vec.push_back(&foo);
func_vec.push_back(&bar);
for (auto& func : func_vec) {
func();
}
return 0;
}
```
在上面的示例中,定义了一个存储函数指针的std::vector容器func_vec,并将两个函数指针foo和bar添加到容器中。然后使用for循环遍历容器中的函数指针,并调用它们。
阅读全文