1

我正在创建一个将素数放入向量的程序。我将举一个例子来更好地演示这个程序应该如何工作:

用户:3

输出 3

用户:13

输出:3 5 7 11 13

简而言之,该程序将小于或等于用户输入的素数相加。如果用户的实际输入是素数,那么最后给出一个 true 或 false 的布尔值。

            if (found)
            {
                vector_output.push_back(j);

            }
            if (number == j)
            {
                if (found ==false)
                    return false;
                else




void checkprime::vector_finder()    
{
    for (int k=0; k < vector_output.size(); k ++)
    {    
        cout << vector_output[k];
    }    
}

不幸的是,我的输出是:

用户 3

输出 3

用户 13

输出:3 5 5 5 7 7 7 7 7 9 11 13

我怎样才能让它到向量不重复数字的地方?

我在 vector_output.pushback(j) 之前想到了类似 if 语句的东西,例如

if (vector_output.size() != 0 && vector.output.back() != j)
      vector_output.push_back(j);

会工作,但它没有输出任何东西。

4

1 回答 1

1

您可以使用删除重复项std::unique。例如:

std::vector<int> v{1, 2, 2, 3, 5, 9, 1};
std::sort(v.begin(), v.end());

v.erase(std::unique(v.begin(), v.end()), v.end());
于 2013-09-30T00:11:47.330 回答