如何使用结构实例的名称调用其属性
How to call properties of a struct instance with it's names
我有一个名为informations的结构,
struct informations {
char no[12];
char name[16];
int exam1, exam2;
float result;
char letter[3];
}
我正在将学生的信息存储在文件中。我可以读/写文件和其他东西。我想根据结构具有的所有属性(在这种情况下,["no","name","exam1","expam2","result","letter"])对所有学生(信息结构的实例)进行排序。
我有一个排序函数,它对一个属性进行排序,如下所示:
for(int i = 0; i < 99; i++) {
for(int o = 0; o < 99; o++) {
if(students[i].result > students[i + 1].result) {
container = students[i];
students[i] = students[i + 1];
students[i + 1] = container;
}
}
}
上面的代码适用于按结果属性对所有学生进行排序,但我希望按所有属性对学生进行不同的排序,而不重复上面所有属性的代码。我有这样的想法,但我不知道如何将这些想法应用到代码中,
将所有结构属性存储在数组中,
string properties[6] = ["no", "name", "exam1", "exam2", "result", "letter"];
在属性数组上迭代,
在迭代循环中,通过迭代属性使用上述排序函数
感谢您的帮助!
很抱歉,但如果没有反射(C++没有),这不是一件小事。
您可以通过从二次型实现切换到std::sort
来减少重复,然后为每个排序标准编写一组比较器。这些应该像return student.result < student.result
一样简单,其中result
是您想要比较的任何成员(尽管这对于数组和C字符串来说更复杂!)。
相关文章:
- C++调用具有 *this 属性的单个帮助程序函数
- C++:从属性类调用顶级类方法
- 类对象属性是否可以调用返回属性应具有的值的方法C++?
- C++ - 如何在不调用其属性的情况下调用类?
- CMake 设置使用不正确的参数数调用的目标属性
- 通过指针算法调用结构的结构属性
- 使用类属性调用具有非类型模板参数的模板函数
- 如何将按钮添加到节点的属性编辑器面板,该面板调用该节点内的方法?
- 如何调用 ActiveX 控件的属性页?
- 如何使用结构实例的名称调用其属性
- 远程过程调用和MIDL:如何使用[OUT]属性实现功能
- observeValueForKeyPath没有为持有C++对象的属性调用
- 如何从 C# 调用C++本机属性
- Rcpp编译的属性不可用于调用
- C++:父对象在不调用方法的情况下更改其id属性
- 属性错误:"模块"对象没有属性"func",仅通过C++调用
- (初学者模式)调用时变量的属性
- 如何使用V8从C++访问和调用Javascript对象属性和方法
- 创建一个具有调用策略的属性- boost::python
- 如何在c++中动态调用属性名,就像JS中的方括号符号一样