首先,我想说这是我在stackOverflow上问的第一个问题,所以如果我不够清楚,我深表歉意。
我的问题是关于以参数方式引用函数内的结构特征。我在 C++ 中工作。
我真正想要实现的是能够根据作为参数给出的特定结构特征对结构对象(或类对象)的向量进行排序。 我还想通过模板提供结构的类型,因此一些处理特定情况的解决方法通常可能不起作用。
我将展示一个简单的例子来说明我的意思。
比方说,我有一个名为“human”的结构,具有以下特征:“年龄”、“身高”、“体重”。
我们还假设我有一个称为“人类”的“人类”对象向量。
在这里,假设我想创建一个函数,根据我作为参数传递的内容,可以将每个元素的年龄、高度或体重输出到屏幕上。
下面的代码显然不起作用。我要求正确的方法来做到这一点。
struct human{
int age;
int height;
int weight;
};
void show(vector<human> &elements, int value){
for (int i=0; i<elements.size(); i++)
cout << elements[i].value << endl;
}
int main{
...
vector<human> mankind;
...
show(mankind, age);
show(mankind, height);
show(mankind, weight);
...
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想指出,这个例子是一个非常简单的案例。当然,如果我为每个特征创建单独的函数,或者如果我使用一种厚颜无耻的方式,比如传递一个字符串“年龄”或“身高”或“体重”作为参数,在函数内部检查它并有每个人都有一个完全独立的案例。
但是,此类解决方法在问题的一般情况下不起作用,尤其是当我有许多不同类型的结构(通过 atemplate T和vector< T >)和功能时。