我试图在矢量上使用矢量上的唯一算法。
我面临的错误是" unique不能用作函数"
问题在于即使使用int的常规向量,我也无法使用unique()命令。
我试图做的是擦除矢量中的每个重复矢量。
这样:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
void resettaPuntatore(int puntatore, int lunghezza)
{
puntatore = lunghezza;
}
int main()
{
vector<int> v_main;
vector<int> v_reverse;
vector<vector<int> > v_contenitore;
string parola;
int lunghezza_parola;
int puntatore;
cout << "Inserire la parola da permutare.\n";
cin >> parola;
lunghezza_parola = parola.length();
puntatore = lunghezza_parola-1;
for(int i = 0; i < lunghezza_parola; i++)
{
v_main.push_back(i+1);
}
for(int i = 0; i < lunghezza_parola; i++)
{
v_reverse.push_back(v_main[lunghezza_parola-1-i]);
}
while(v_main != v_reverse)
{
v_main[puntatore]++;
if(v_main[puntatore] > lunghezza_parola)
{
v_main[puntatore] = 1;
puntatore--;
}
else
{
resettaPuntatore(puntatore, lunghezza_parola);
}
v_contenitore.push_back(v_main);
}
vector<vector<int> >::iterator itr = unique(v_main.begin(), v_main.end());
}
然后我会将所有其他项目从itr擦除到向量的末尾
我做错了什么?
答案 0 :(得分:1)
要么你没有正确的包含,要么你错过了某个std::
。这个例子很好编译:
#include <algorithm>
#include <vector>
int main()
{
using std::vector;
using std::unique;
vector<vector<int> > v_main;
v_main.push_back(vector<int>(10));
v_main.push_back(vector<int>(10, 5));
v_main.push_back(vector<int>(10, 6));
vector<vector<int> >::iterator itr = unique(v_main.begin(), v_main.end());
}