是否有一个函数来确定并发现该值是否已经存在于C++中? 我在学习一个C++的同时做一个旧的项目,发现有一些困难来排序一个用户列表,并且避免它在列表中选择相同的数字,例如,我选择一个1到n的范围,然后我想选择多少个数字,例如我选择1到25,从它们中挑选15个。我的代码将输出123511554481562132。按顺序打印,有些数字会重复,我想找到一种方法,按顺序打印,而不重复。我有点迷路了
我尝试过使用list::sort,但没有任何结果 编辑:完整代码:是否有一个函数来确定并发现该值是否已经存在于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
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 91请详细说明实际问题是什么。目前,还不清楚第二个数字是什么意思,即使在多次尝试阅读之后。因为您只是生成了一些数字,所以基于它,打印这些数字,然后丢弃它们。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";
}