Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个函数来确定并发现该值是否已经存在于C++中? 我在学习一个C++的同时做一个旧的项目,发现有一些困难来排序一个用户列表,并且避免它在列表中选择相同的数字,例如,我选择一个1到n的范围,然后我想选择多少个数字,例如我选择1到25,从它们中挑选15个。我的代码将输出123511554481562132。按顺序打印,有些数字会重复,我想找到一种方法,按顺序打印,而不重复。我有点迷路了_C++_List_Sorting - Fatal编程技术网

是否有一个函数来确定并发现该值是否已经存在于C++中? 我在学习一个C++的同时做一个旧的项目,发现有一些困难来排序一个用户列表,并且避免它在列表中选择相同的数字,例如,我选择一个1到n的范围,然后我想选择多少个数字,例如我选择1到25,从它们中挑选15个。我的代码将输出123511554481562132。按顺序打印,有些数字会重复,我想找到一种方法,按顺序打印,而不重复。我有点迷路了

是否有一个函数来确定并发现该值是否已经存在于C++中? 我在学习一个C++的同时做一个旧的项目,发现有一些困难来排序一个用户列表,并且避免它在列表中选择相同的数字,例如,我选择一个1到n的范围,然后我想选择多少个数字,例如我选择1到25,从它们中挑选15个。我的代码将输出123511554481562132。按顺序打印,有些数字会重复,我想找到一种方法,按顺序打印,而不重复。我有点迷路了,c++,list,sorting,C++,List,Sorting,我尝试过使用list::sort,但没有任何结果 编辑:完整代码: int selectedNumbers, rounds, totalNumbers; list<int> numbersList {totalNumbers}; int Calc(int totalNumbers, int selectedNumbers) { for (int j = 1; j <= totalNumbers; j++) { numbersList.push

我尝试过使用list::sort,但没有任何结果

编辑:完整代码:

int selectedNumbers, rounds, totalNumbers;
list<int> numbersList {totalNumbers};

int Calc(int totalNumbers, int selectedNumbers) 
{
    for (int j = 1; j <= totalNumbers; j++)
    {
        numbersList.push_back(j);
        while (j++ <= selectedNumbers)
        {
            int randomList = (rand() % selectedNumbers) + 1;
            cout << randomList << " ";
        }
    }
}

int main()
{
    cout << "How many numbers on the total? ";
    cin >> totalNumbers;
    cout << "Number of rounds: ";
    cin >> rounds;
    cout << "How many selected numbers?";
    cin >> selectedNumbers;

    for (int i = 1; i <= rounds; i++)
    {
        Calc(totalNumbers, selectedNumbers);
        cout << "\n";
    }

    return 0;
}

在您的代码中,我没有看到排序函数

list的sort函数将按升序对元素进行排序。list的独特功能将从列表中删除重复的元素

下面是一个小例子

#include <iostream>
#include <functional>
#include <list>

std::ostream& operator<<(std::ostream& ostr, const std::list<int>& list)
{
    for (auto &i : list) {
        ostr << " " << i;
    }
    return ostr;
}

int main()
{
    std::list<int> list = {8,7,5,9,0,1,3,2,6,4,4,3};

    std::cout << "list before: " << list << "\n";
    list.sort();
    list.unique();
    std::cout << "list descending: " << list << "\n";
}
输出:

之前的列表:87590132346443
列表递减:01 2 3 4 5 6 7 8 9

1请详细说明实际问题是什么。目前,还不清楚第二个数字是什么意思,即使在多次尝试阅读之后。因为您只是生成了一些数字,所以基于它,打印这些数字,然后丢弃它们。2我尝试过使用list::sort,但没有任何结果。显然,你已经取得了一些成果。请详细说明为什么它不适合您的需要。我尝试过使用list::sort,但没有任何结果。你得到了什么结果?实际的代码有点长,当我粘贴到这里时,stackoverflow抛出了格式化。问题是,我为数字的范围提供一些输入,然后选择其中的多少,然后以排序的方式打印它们,而不重复它们。最好的方法是创建一个包含所有数字1..25的列表。然后随机洗牌列表。选择前15项,然后排序,然后打印。请将代码粘贴到stackoverflow?修复警告。如果你不能,就忽略它们。我们可以为您修改格式。没有代码就很难理解你想要什么…嘿,谢谢你的输入!我已经删除了此代码上的排序,我将尝试这种方式,看看它是否有效!它有点像我希望的那样工作,它仍然需要一些调整,但谢谢你!
#include <iostream>
#include <functional>
#include <list>

std::ostream& operator<<(std::ostream& ostr, const std::list<int>& list)
{
    for (auto &i : list) {
        ostr << " " << i;
    }
    return ostr;
}

int main()
{
    std::list<int> list = {8,7,5,9,0,1,3,2,6,4,4,3};

    std::cout << "list before: " << list << "\n";
    list.sort();
    list.unique();
    std::cout << "list descending: " << list << "\n";
}