我们说我的结构定义如下:
struct Record
{
string a;
string b;
string c;
};
我还有vector<Record>
包含一些数据。我正在编写一个以Record
和vector<Record>
为输入的函数,我必须返回vector
中与Record
匹配的所有条目。
但是,在将作为参数传递给函数的Record
中,某些条目将初始化为""
。这意味着与vector
中的条目进行比较时,不应考虑这些条目。
我目前编写的功能如下:
vector<Record> SearchQuery (vector<Record> data, Record tosearch)
{
if (tosearch.a != "")
{
for (int i = 0; i < data.size(); i++)
{
if (data[i].entryno != tosearch.a)
{
data.erase(data.begin() + i);
i--;
}
}
}
.
. // I can duplicate the above part for entry b and c as well
}
但是,编写代码似乎不是一种好方法,因为会有很多冗余。此外,如果Record
有很多成员变量,那么代码将是巨大的。我的问题是,是否有更好的方法来满足我上面提到的要求?
我已经考虑过通过宏访问成员变量,但似乎没有成功。通过结构中第i个变量的索引访问成员变量似乎也存在问题。感谢。