我有一个结构向量sData的向量,我的结构包含5个元素(名称,年龄,技术,项目,语言)
用户可以输入名称,并且应该输出与该名称相同的结构以及其他元素。我的问题是用户只能输入其中两个,并且应该只检查那些就像用户可以输入年龄和语言一样,如果您认为您可以写这么多的if,那么它应该输出具有相同年龄和语言的人的列表,这样您就可以输出正确的信息,因为您有5个元素并且用户可以从5个中选择5个,然后随机输入3个或4个,我的程序应该理解该逻辑。在我的代码中,当用户未输入任何字符串(名称,技术,项目,费率)时,我正在使用Qt小部件应用程序进行编写。默认值为NULL,年龄为-1
struct S
{
QString name;
int age;
QString techs;
QString projects;
QString rate;
};
QVector<S> sData;
QVector<int> indexData;
//this is how i did for the name
indexData.clear();
if(searchName!=NULL)//i don't want to write this if for name and age ||
// name and tech ... then age and tech etc.
{
for(int i=0;i<sData.count();++i)
{
if(searchName==sData[i].name)
{
indexData.push_back(i);
}
}
}
有帮助吗?
struct S
{
QString name;
int age;
QString techs;
QString projects;
QString rate;
};
QVector<S> sData;
QVector<int> indexData;
int main() {
searchName = ...;
searchAge = ...;
searchTechs = ...;
...
auto it = std::find_if(std::begin(sData), std::end(sData),
[&searchName, &searchAge, &searchTecs, ...](const S& s)
{
bool eq = true;
if (searchName)
eq &= (searchName == s.name);
if (searchAge)
eq &= (searchAge == s.age);
if (searchTechs)
eq &= (searchTechs == s.techs);
....
return eq;
}
if (it == std::end(sData))
std::terminate(); //element not found
// *it is the desired element
}