C++ 删除重复的字符串向量,保留第一个实例。Can';不使用算法

C++ 删除重复的字符串向量,保留第一个实例。Can';不使用算法,c++,vector,C++,Vector,我有一个向量 strings.vector输入 bob sam bob sammom aardvark money aardvark wanted 我需要删除重复项,但向量的每个部分都对应于下一个位置。它们是成对的 例如,bob对应于its定义,即sam 我需要保留第一个实例,因此保留bob和sam,但删除bob的第二个实例,因此删除bob和sammon。只需保留该对的第一个实例 如果sam和sammon不匹配,则无关紧要,重要的是配对的第一部分。 矢量已按字母顺序排列。我

我有一个向量

strings.vector输入

bob 
sam
bob 
sammom
aardvark    
money
aardvark    
wanted
我需要删除重复项,但向量的每个部分都对应于下一个位置。它们是成对的

例如,bob对应于its定义,即sam

我需要保留第一个实例,因此保留bobsam,但删除bob的第二个实例,因此删除bobsammon。只需保留该对的第一个实例

如果samsammon不匹配,则无关紧要,重要的是配对的第一部分。

矢量已按字母顺序排列。我不能使用算法库。

像这样的东西

#include <iostream>

using namespace std;

int main()
{
    int stringSize=10, k=2, newlen=0;

    string v[] = {"bob","sam","bob","samelia","bob","sammom","aardvark","money","aardvark","wanted"};

    // erase duplicates
    for (int i=0; i<=stringSize-4; i+=2)
    if (v[i]==v[i+k])
    {
        while (v[i]==v[i+k])
        {
            v[i+k]="";
            v[i+k+1]="";

            k+=2;
        }
        i=k-2;
        k=2;
    }

    // remove blank components
    for (k=0; k<stringSize; k++)
    if (v[k]!="")
    {
        v[newlen]=v[k];
        newlen++;
    }
    stringSize=newlen;

    // show the cleaned vector
    for (int i=0; i<stringSize; i++)
    cout << v[i] << endl;

}
#包括
使用名称空间std;
int main()
{
int stringSize=10,k=2,newlen=0;
字符串v[]={“鲍勃”、“萨姆”、“鲍勃”、“萨米莉亚”、“鲍勃”、“萨姆姆”、“土豚”、“钱”、“土豚”、“通缉犯”};
//删除重复项

对于(int i=0;i这将删除重复项,即使像这样的行中有多个重复项

再次注意,这是针对对的

只保留第一个实例。 假设向量输入;具有以下特性

bob
son
bob
son2
mark
wife1
mark
wife2
mark
wife3
变成

bob
son
mark
wife

这将删除一行中最多6个重复项,并根据需要增加

由于某种原因,我不得不删除空白两次。

    //vector<string> input; is filled in alphabetical order with duplicates
    int size=input.size();

    //transfer to dynamically created array of strings
    string *strarray;
    strarray = new string[size];
    for(int i=0; i<size; i++){
       strarray[i] = input[i];//Copy the vector to the string
    }

    // erase duplicates
    for (int i=0; i<=size-(size/2); i+=2){
        if (strarray[i]==strarray[i+2])
        {
            strarray[i+2].erase(0,strarray[i+2].size());
            strarray[i+3].erase(0,strarray[i+3].size());
        }
        if (strarray[i]==strarray[i+4])
        {
            strarray[i+4].erase(0,strarray[i+4].size());
            strarray[i+5].erase(0,strarray[i+5].size());
        }
        if (strarray[i]==strarray[i+6])
        {
            strarray[i+6].erase(0,strarray[i+6].size());
            strarray[i+7].erase(0,strarray[i+7].size());
        }
        if (strarray[i]==strarray[i+8])
        {
            strarray[i+8].erase(0,strarray[i+8].size());
            strarray[i+9].erase(0,strarray[i+9].size());
        }
        if (strarray[i]==strarray[i+10])
        {
            strarray[i+10].erase(0,strarray[i+10].size());
            strarray[i+11].erase(0,strarray[i+11].size());
        }
    }

    // remove blank components
        for (int i=0; i<size; i++){
        if (strarray[i]=="")        {
            for (int j=i; j<size-1; j++)
                strarray[j]=strarray[j+1];

            size--;
            i--;
        }
        }
//矢量输入;按字母顺序填写重复项
int size=input.size();
//传输到动态创建的字符串数组
弦*弦;
strarray=新字符串[大小];

对于It i=0;这里需要更多的信息:这是什么语言?你尝试了什么?它在C++中,我没有尝试任何东西,因为我不知道如何去做这个。只使用算法库。这就是它的目的。是的,我使用了一个字符串向量和你的示例值。我只是改进了代码。现在将无限连续地工作。pairs:)事实上,我只是在最后一个填充的帖子上停下来,这是由stringsize给出的。谢谢,我该怎么办,因为重复的如果不是必需的,第二个是重复的,如果是第三个呢?适用于无限多个连续的对。你想让它只删除第二个重复吗?