c++ 结构体中使用模版
时间: 2023-06-13 19:09:09 浏览: 98
在 C++ 中,可以在结构体中使用模板。下面是一个示例代码:
```
template<typename T>
struct MyStruct {
T value;
void setValue(T val) {
value = val;
}
T getValue() const {
return value;
}
};
int main() {
MyStruct<int> myIntStruct;
myIntStruct.setValue(42);
std::cout << "Value: " << myIntStruct.getValue() << std::endl;
MyStruct<std::string> myStringStruct;
myStringStruct.setValue("Hello, World!");
std::cout << "Value: " << myStringStruct.getValue() << std::endl;
return 0;
}
```
在这个示例代码中,结构体 `MyStruct` 有一个模板参数 `T`,表示结构体中的值的类型。结构体中有一个成员变量 `value`,表示结构体中的值。`setValue` 方法用于设置结构体中的值,`getValue` 方法用于获取结构体中的值。在 `main` 函数中,我们实例化了两个 `MyStruct` 对象,一个用于存储整数类型的值,另一个用于存储字符串类型的值。在实例化时,需要通过尖括号指定类型参数。
相关问题
c++模板封装结构体
以下是一个使用C++模板封装结构体的示例代码:
```cpp
#include <iostream>
using namespace std;
template <typename T>
struct MyStruct {
T data1;
T data2;
void printData() {
cout << "Data 1: " << data1 << endl;
cout << "Data 2: " << data2 << endl;
}
};
int main() {
MyStruct<int> myIntStruct;
myIntStruct.data1 = 10;
myIntStruct.data2 = 20;
myIntStruct.printData();
MyStruct<double> myDoubleStruct;
myDoubleStruct.data1 = 3.14;
myDoubleStruct.data2 = 6.28;
myDoubleStruct.printData();
return 0;
}
```
在这个示例中,我们定义了一个结构体`MyStruct`,它有两个成员变量`data1`和`data2`,以及一个成员函数`printData`,用于打印这两个成员变量的值。我们使用模板来定义这个结构体,这样我们就可以在不同的数据类型上使用它。
在`main`函数中,我们首先定义了一个`MyStruct<int>`类型的变量`myIntStruct`,并给它的两个成员变量赋值。然后我们调用了`printData`函数,打印出了这两个成员变量的值。接着我们定义了一个`MyStruct<double>`类型的变量`myDoubleStruct`,并重复了相同的操作。
c++结构体和自定义函数排序
在C++中,结构体(struct)是一种用户自定义的数据类型,用于组合不同类型的数据成员,形成一个新的数据实体。若想对结构体数组或结构体变量按照某个成员进行排序,可以借助标准模板库(STL)提供的算法,比如`std::sort()`。
自定义函数排序通常涉及提供一个比较函数(comparison function),该函数接受两个结构体实例作为输入,并返回一个布尔值表示它们的相对顺序。例如:
```cpp
#include <algorithm>
#include <iostream>
// 定义结构体
struct Person {
std::string name;
int age;
// 按照年龄升序的默认比较函数
bool operator<(const Person& other) const {
return age < other.age;
}
};
// 自定义函数排序示例
void sortPersonByAge(std::vector<Person>& people) {
std::sort(people.begin(), people.end());
}
int main() {
std::vector<Person> people = {{"Alice", 25}, {"Bob", 30}, {"Charlie", 20}};
sortPersonByAge(people);
for (const auto& person : people) {
std::cout << "Name: " << person.name << ", Age: " << person.age << std::endl;
}
return 0;
}
```
在这个例子中,我们通过`operator<`重载了小于运算符,使得结构体`Person`可以直接用于`std::sort()`进行按年龄升序排序。如果你想降序排列,只需将`age < other.age`改为`age > other.age`即可。
阅读全文