我已经有两个STL向量。例如:
vector<int> MyList;
MyList.push_back(10);
MyList.push_back(20);
MyList.push_back(30);
MyList.push_back(40);
MyList.push_back(50);
vector<int> MyListSub;
MyListSub.push_back(20);
MyListSub.push_back(30);
MyListSub.push_back(40);
我想获取MyListSub中的元素数量,而不是MyList中的元素数量。 对于此实例,结果为“2”
答案 0 :(得分:4)
您可以使用std::set_difference
:
std::vector<int> diff;
std::set_difference(MyList.begin(), MyList.end(),
MyListSub.begin(), MyListSub.end(),
std::back_inserter(diff));
正如@Jan指出的那样,向量必须进行排序。如果不是,请使用std::sort
对其进行排序:
std::sort(MyList.begin(), MyList.end());
或者,您可以考虑首先将元素存储在std::set
中,这样就可以对它们进行排序。