我对C ++比较陌生,我需要一些建议。我会尽量保持简短。按大小组织整数值的最简单,最好的方法是什么?然后,我希望能够使用该信息。我的目标基本上是,我可以从源获取一个整数,然后我想按整数值的大小组织源,如果两个不同的源具有相同的值,我希望程序执行一堆代码。希望这是有道理的。
非常感谢任何帮助。 (按大小我的意思是价值,抱歉给您带来任何不便)
编辑: 不幸的是,我没有展示示例代码,但我会尝试澄清我的目标。我想比较游戏中2-20个“角色”之间的速度。最快的一个将在游戏的下一个部分中首先出现,然后是第二个最快的等等。如果2个“字符”具有相同的速度,我希望他们的起始位置被随机化(在它们之间)。我的大部分内容都在我脑海中,但我大部分时间都在努力弄清楚如何对速度进行分类并知道谁拥有最高的速度值。
答案 0 :(得分:0)
std::sort
简单用法:
// intArray will be replaced by your collection of integers.
const int SIZE = 7;
int intArray[SIZE] = {5, 3, 32, -1, 1, 104, 53};
std::sort(intArray, intArray + SIZE);
cout << "Sorted Array looks like this." << endl;
for (size_t i = 0; i != SIZE; ++i)
cout << intArray[i] << " ";
这应打印:-1 1 3 5 32 53 104
答案 1 :(得分:0)
如果整数必须是唯一的(不是容器中相同整数的2倍)并排序,则可能需要使用set
你问题的下一部分不是很清楚,但无论如何我都会尝试。
如果你想知道你的容器中是否已经存在某个整数,最好的方法是通过所述容器并测试每个元素,为此我会猜测vector
,但由于排序很重要,宁愿使用set
或priority_queue
,但这些更复杂。
现在有“源”部分。从来源来看,您的意思是来自外部来源的输入吗?无论如何,我认为这就是你的意思。基本上你想要一个容器按其值按升序存储“源”,当两个得到相同的值时,做一些事情。
最自然和最优化的方法是创建源对象,并重载&lt;这些对象中的运算符,然后在该运算符中,您可以测试这些对象是否具有相同的值来执行“一堆代码”。
这是一个示例:
class Source
{
private:
int m_value; // The value of this source
public:
Source(int const& v) // setting the source's value
{
setValue(v);
}
int getValue() // Returns the sources value for comparison
{
return m_value;
}
int setValue(int const& v) // Sets the source's value
{
m_value = v;
}
// ... [Insert other methods here]
bool operator<(Source const& s) // Testing which source has the lowest value
{
if(m_value == s.m_value()) // If their values are equal
{
// Your code
}
return (m_value < s.m_value()); // Else we test if the other value's bigger
}
};
然后您可以将它们存储在set中,例如。