C++ 删除C+中的字符串元素+;

C++ 删除C+中的字符串元素+;,c++,string,C++,String,我必须输入一个整数,然后是一个包含n个元素的字符串,int类型; 任务是删除重复的元素。我试图用这段代码解决问题,但不知道哪里出了错。你能帮我吗 #include <iostream> #include <string> using namespace std; int main() { int n, br=0; string masiv; cin>>n; for(int i=0;i<n;i++) {

我必须输入一个整数,然后是一个包含n个元素的字符串,int类型; 任务是删除重复的元素。我试图用这段代码解决问题,但不知道哪里出了错。你能帮我吗

#include <iostream>
#include <string>

using namespace std;
int main()
{
    int n, br=0;

    string masiv;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>masiv[i];
    }
    n=masiv.size();
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(masiv[i]==masiv[j] && i!=j)
            {
                masiv.erase (std::remove(masiv.begin(), masiv.end(), masiv[i]), masiv.end());
            }
        }
    }
    cout<<masiv<<endl;
    system("pause");
    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int n,br=0;
弦马西夫;
cin>>n;
对于(int i=0;i>masiv[i];
}
n=masiv.size();

对于(int i=0;i使用以下代码:

    #include <iostream>
    #include <string>

    using namespace std;
    int main()
    {
        int n, br=0;

        string masiv="";
        cin>>n;
        for(int i=0;i<n;i++)
        {
            char c;
            cin>>c;
            masiv += c;
        }
        n=masiv.size();
        string result="";
        for(int i=0;i<n;i++)
        {
            bool repeated = false;
            for(int j=0;j<result.size();j++)
            {
                if(masiv[i]==result[j])
                {
                    repeated = true; // indicating that massiv[i] was added before
                }
            }
            if(repeated == false)
            {
                result += masiv[i]; // won't add masiv[i] to the result unless it's the first time encountered 
            }
        }
        cout<<result<<endl;
        system("pause");
        return 0;
    }
#包括
#包括
使用名称空间std;
int main()
{
int n,br=0;
字符串masiv=“”;
cin>>n;
对于(int i=0;i>c;
masiv+=c;
}
n=masiv.size();
字符串结果=”;

对于(int i=0;i使用以下代码:

    #include <iostream>
    #include <string>

    using namespace std;
    int main()
    {
        int n, br=0;

        string masiv="";
        cin>>n;
        for(int i=0;i<n;i++)
        {
            char c;
            cin>>c;
            masiv += c;
        }
        n=masiv.size();
        string result="";
        for(int i=0;i<n;i++)
        {
            bool repeated = false;
            for(int j=0;j<result.size();j++)
            {
                if(masiv[i]==result[j])
                {
                    repeated = true; // indicating that massiv[i] was added before
                }
            }
            if(repeated == false)
            {
                result += masiv[i]; // won't add masiv[i] to the result unless it's the first time encountered 
            }
        }
        cout<<result<<endl;
        system("pause");
        return 0;
    }
#包括
#包括
使用名称空间std;
int main()
{
int n,br=0;
字符串masiv=“”;
cin>>n;
对于(int i=0;i>c;
masiv+=c;
}
n=masiv.size();
字符串结果=”;

对于(int i=0;i使用以下代码:

    #include <iostream>
    #include <string>

    using namespace std;
    int main()
    {
        int n, br=0;

        string masiv="";
        cin>>n;
        for(int i=0;i<n;i++)
        {
            char c;
            cin>>c;
            masiv += c;
        }
        n=masiv.size();
        string result="";
        for(int i=0;i<n;i++)
        {
            bool repeated = false;
            for(int j=0;j<result.size();j++)
            {
                if(masiv[i]==result[j])
                {
                    repeated = true; // indicating that massiv[i] was added before
                }
            }
            if(repeated == false)
            {
                result += masiv[i]; // won't add masiv[i] to the result unless it's the first time encountered 
            }
        }
        cout<<result<<endl;
        system("pause");
        return 0;
    }
#包括
#包括
使用名称空间std;
int main()
{
int n,br=0;
字符串masiv=“”;
cin>>n;
对于(int i=0;i>c;
masiv+=c;
}
n=masiv.size();
字符串结果=”;

对于(int i=0;i使用以下代码:

    #include <iostream>
    #include <string>

    using namespace std;
    int main()
    {
        int n, br=0;

        string masiv="";
        cin>>n;
        for(int i=0;i<n;i++)
        {
            char c;
            cin>>c;
            masiv += c;
        }
        n=masiv.size();
        string result="";
        for(int i=0;i<n;i++)
        {
            bool repeated = false;
            for(int j=0;j<result.size();j++)
            {
                if(masiv[i]==result[j])
                {
                    repeated = true; // indicating that massiv[i] was added before
                }
            }
            if(repeated == false)
            {
                result += masiv[i]; // won't add masiv[i] to the result unless it's the first time encountered 
            }
        }
        cout<<result<<endl;
        system("pause");
        return 0;
    }
#包括
#包括
使用名称空间std;
int main()
{
int n,br=0;
字符串masiv=“”;
cin>>n;
对于(int i=0;i>c;
masiv+=c;
}
n=masiv.size();
字符串结果=”;

对于(int i=0;i首先,您应该将输入读入一个字符,然后使用
push_back()
将读取的字符保存到字符串中

cin>>n;
for(int i=0;i<n;i++)
{
    char c;
    cin>>c;
    masiv.push_back(c);
}
看看smiple
erase()
方法有多好?只需擦除重复的元素(后一个).
j
指定重复元素的标记,并且
1
指定将从该标记开始删除的字符数。必须减小
j
,因为一旦在第j个标记处删除字符,现在j将指向下一个字符。当内循环继续时,它将增加
j
。如果在删除字符后不调整标记,则循环递增时将跳过字符。必须调整
j
以指向正确的索引。因此
j-;

编辑:更好的循环

您可以重新排列循环,而不必检查
i==j
。只需启动内部循环索引,使其仅比外部循环索引大1

for(int i=0;i<masiv.size();i++)
{
    for(int j=i+1;j<masiv.size();j++)
    {
        if(masiv[i]==masiv[j])
        {
            masiv.erase(j--, 1);
        }
    }
}

对于(int i=0;i首先,您应该将输入读入一个字符,然后使用
push_back()
将读取的字符保存到字符串中

cin>>n;
for(int i=0;i<n;i++)
{
    char c;
    cin>>c;
    masiv.push_back(c);
}
看看smiple
erase()
方法有多好?只需擦除重复的元素(后一个).
j
指定重复元素的标记,并且
1
指定将从该标记开始删除的字符数。必须减小
j
,因为一旦在第j个标记处删除字符,现在j将指向下一个字符。当内循环继续时,它将增加
j
。如果在删除字符后不调整标记,则循环递增时将跳过字符。必须调整
j
以指向正确的索引。因此
j-;

编辑:更好的循环

您可以重新排列循环,而不必检查
i==j
。只需启动内部循环索引,使其仅比外部循环索引大1

for(int i=0;i<masiv.size();i++)
{
    for(int j=i+1;j<masiv.size();j++)
    {
        if(masiv[i]==masiv[j])
        {
            masiv.erase(j--, 1);
        }
    }
}

对于(int i=0;i首先,您应该将输入读入一个字符,然后使用
push_back()
将读取的字符保存到字符串中

cin>>n;
for(int i=0;i<n;i++)
{
    char c;
    cin>>c;
    masiv.push_back(c);
}
看看smiple
erase()
方法有多好?只需擦除重复的元素(后一个).
j
指定重复元素的标记,并且
1
指定将从该标记开始删除的字符数。必须减小
j
,因为一旦在第j个标记处删除字符,现在j将指向下一个字符。当内循环继续时,它将增加
j
。如果在删除字符后不调整标记,则循环递增时将跳过字符。必须调整
j
以指向正确的索引。因此
j-;

编辑:更好的循环

您可以重新排列循环,而不必检查
i==j
。只需启动内部循环索引,使其仅比外部循环索引大1

for(int i=0;i<masiv.size();i++)
{
    for(int j=i+1;j<masiv.size();j++)
    {
        if(masiv[i]==masiv[j])
        {
            masiv.erase(j--, 1);
        }
    }
}

对于(int i=0;i首先,您应该将输入读入一个字符,然后使用
push_back()
将读取的字符保存到字符串中

cin>>n;
for(int i=0;i<n;i++)
{
    char c;
    cin>>c;
    masiv.push_back(c);
}
看看smiple
erase()
方法有多好?只需擦除重复的元素(后一个).
j
指定重复元素的标记,并且
1
指定将从该标记开始删除的字符数。必须减小
j
,因为一旦在第j个标记处删除字符,现在j将指向下一个字符。当内循环继续时,它将增加
j
。如果在删除字符后不调整标记,则循环递增时将跳过字符。必须调整
j
以指向正确的索引。因此
j-;

编辑:更好的循环

您可以重新排列循环,而不必检查
i==j
。只需启动内部循环索引,使其仅比外部循环索引大1

for(int i=0;i<masiv.size();i++)
{
    for(int j=i+1;j<masiv.size();j++)
    {
        if(masiv[i]==masiv[j])
        {
            masiv.erase(j--, 1);
        }
    }
}
用于(int i=0;i
#包括
#包括
#包括//标准::唯一,标准::距离
#包括
int main(int argc,字符**argv)
{
std::字符串masiv;
int n;
标准:cin>>n;