我正在编写一个程序来处理与集合的不同操作,并且我给出的一些函数应该返回对象。 SoS
是在头文件中声明的对象,具有数据成员m_vos
(字符串向量)和布尔值。在我正在创建新对象和新集合的函数中。如何将设置与对象绑在一起?
这就是我所拥有的:
SoS SoS::makeIntersection(const SoS& B) const {
SoS intersection;
vector<string> set1;
vector<string> set2;
vector<string> set3;
set1 = this->m_vos;
set2 = B.m_vos;
//int totalElements;
//totalElements = (set1.size() + set2.size());
sort(set1.begin(), set1.end());
sort(set2.begin(), set2.end());
set_intersection(set1.begin(),set1.end(),set2.begin(),set2.end(),back_inserter(set3));
return intersection;
}
答案 0 :(得分:1)
要从函数返回对象,只需将函数定义为返回对象即可。您需要在函数内定义(或传入)一个对象,根据需要进行修改,然后返回它。与您的问题相关的示例如下所示。
Object myFunction() {
// object to return
Object myObject;
// set of strings
std::set<string> mySet;
// convert to vector
std::vector<string> myVector(mySet.begin(), mySet.end());
// assign to object (the actual setting will be different)
myObject.setVector(myVector);
// return object
return myObject;
}
答案 1 :(得分:1)
彻底抛弃set3
并直接在对象中构建交叉点:
set_intersection(set1.begin(),
set1.end(),
set2.begin(),
set2.end(),
back_inserter(intersection.m_vos));