C++ 如何从c+中的一组向量中删除重复向量+;? #包括 #包括 #包括 #包括 使用名称空间std; int main(){ 向量S,P,R; 设置SS; S.推回(9); S.推回(9); S.推回(9); P.推回(656); P.推回(11); P.推回(10); R.推回(10); R.推回(11); R.推回(656); SS.插入(R); SS.插入(S); SS.插入(P); 迭代器itr; 向量::迭代器i; for(itr=SS.begin();itr!=SS.end();itr++){ 对于(i=itr->begin();i!=itr->end();i++){ cout
使用一组多集。多集类似于向量,但经过排序,因此p和R(转换为多集)将相等C++ 如何从c+中的一组向量中删除重复向量+;? #包括 #包括 #包括 #包括 使用名称空间std; int main(){ 向量S,P,R; 设置SS; S.推回(9); S.推回(9); S.推回(9); P.推回(656); P.推回(11); P.推回(10); R.推回(10); R.推回(11); R.推回(656); SS.插入(R); SS.插入(S); SS.插入(P); 迭代器itr; 向量::迭代器i; for(itr=SS.begin();itr!=SS.end();itr++){ 对于(i=itr->begin();i!=itr->end();i++){ cout,c++,arrays,algorithm,vector,C++,Arrays,Algorithm,Vector,使用一组多集。多集类似于向量,但经过排序,因此p和R(转换为多集)将相等 [ 2, 2, 2 ] [ 2, 4, 5 ] set-SS; .... SS.insert(多集(R.begin(),R.end()); SS.insert(多集(S.begin(),S.end()); 插入(多集(P.开始(),P.结束()); C不是C++,不要添加无关的标签。关于 SET>代码>?@ PulcMcKeZi。我尝试了在删除它们时设置了一些混乱::迭代器ITR;vector::迭代器i;for(IT
[ 2, 2, 2 ]
[ 2, 4, 5 ]
set-SS;
....
SS.insert(多集(R.begin(),R.end());
SS.insert(多集(S.begin(),S.end());
插入(多集(P.开始(),P.结束());
C不是C++,不要添加无关的标签。关于<代码> SET>代码>?@ PulcMcKeZi。我尝试了在删除它们时设置了一些混乱::迭代器ITR;vector::迭代器i;for(ITR=SS。{ cout@anujbajpai然后你应该问一个问题来帮助它制作一个@anujbajpai,然后请在原始问题中发布你的显示代码,而不是在评论中。谢谢你的解决方案
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
using initial_vector = std::vector<int>;
using vector_of_vecs = std::vector<initial_vector>;
template<class...Args>
vector_of_vecs uniqify(Args&&...args)
{
// build a temporary vector of vectors
vector_of_vecs result { args... };
// sort it. std::unique requires the vector to be sorted
sort(result.begin(), result.end());
// erase all items that are not unique.
result.erase(std::unique(result.begin(),
result.end()),
result.end());
// return the result
return result;
}
auto main() -> int
{
using namespace std;
vector<int> A, B, C;
A = {2, 4, 5};
B = {2, 2, 2};
C = {2, 4, 5};
// note: to avoid copies, simply move the vectors into uniquify
auto uv = uniqify(std::move(A), std::move(B), std::move(C));
// or preserve the source vectors and force copies if you wish
//auto uv = uniqify(A, B, C);
// uv is now a vector of unique vectors.
// print out our vector of unique vectors
for(const auto& i : uv){
cout << '[';
auto sep = " ";
for (const auto& j : i) {
cout << sep << j;
sep = ", ";
}
cout << " ]\n";
}
return 0;
}
[ 2, 2, 2 ]
[ 2, 4, 5 ]
set<multiset<int> > SS;
....
SS.insert(multiset(R.begin(), R.end());
SS.insert(multiset(S.begin(), S.end());
SS.insert(multiset(P.begin(), P.end());