向量c ++的unique()向量

时间:2012-12-09 19:38:12

标签: c++ vector unique

  

可能重复:
  Using “unique()” on a vector of vectors in C++

我试图在矢量上使用矢量上的唯一算法。

我面临的错误是" 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擦除到向量的末尾

我做错了什么?

1 个答案:

答案 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());
}