2016-04-14 3 views
-1

Я относительно новичок в C++, и мне нужен совет. Я постараюсь сделать это коротким. Каков самый простой и лучший способ организации целочисленных значений по их размеру? Затем я хочу использовать эту информацию. Моя цель в основном, я могу получить целое число от источника, а затем я хочу организовать источники по размеру целочисленного значения, и если два разных источника имеют одинаковое значение, я хочу, чтобы программа выполняла кучу кода. Надеюсь, это имело смысл.Организуйте целые числа по размеру?

Любая помощь была бы принята с благодарностью. (По размеру я имею в виду значение, извините за доставленные неудобства)

EDIT: Я не образец кода, чтобы показать, к сожалению, но я попытаюсь пояснить, что я стремлюсь. Я хочу сравнить скорость между 2-20 «персонажами» в игре. Самый быстрый из них будет первым в следующей части игры, а затем вторым самым быстрым и т. Д. Если 2 «символа» имеют одинаковую скорость, я хочу, чтобы их исходное положение было рандомизировано (между ними два). У меня большая часть этого изображена в моей голове, но я в основном стараюсь выяснить, как сортировать скорость и знать, кто имел наивысшую скорость.

+1

Что вы называете размером целого? –

+2

* Надеюсь, это имело смысл * Извините, но для меня не имеет смысла, что вы хотите сделать. Что вы подразумеваете под размером? Стоимость? – NathanOliver

+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

Эта статья может быть какая-то помощь, если вы новичок в СТЛ: http://www.cplusplus.com/articles/NhA0RXSz/

+0

Спасибо, я прочитаю. – Fabian

+2

Это комментарий, а не ответ. – SergeyA

+0

Согласовано, но легко превращается в ответ. Обобщите основные моменты статьи, чтобы при перемещении статьи или хост-сайте пошло вверх, ответ все еще имеет значение. – user4581301

0

Если целые числа должны быть уникальный (не в 2 раза то же целое число в контейнере) и отсортированный, вы можете использовать set

Следующая часть вашего вопроса не очень ясна, но я все равно попробую. Если вы хотите узнать, есть ли какое-то определенное число в вашем контейнере, лучший способ - пройти через указанный контейнер и протестировать каждый элемент, чтобы сделать это vector, я думаю, но поскольку заказ имеет важное значение, я бы предпочел использовать a set или priority_queue, но это немного сложнее.

Теперь есть «исходная» часть. По источнику, вы имеете в виду входные данные из внешних источников? Я так думаю. В основном вы хотите, чтобы контейнер хранили «источники» по их значениям в порядке возрастания, а когда два попадали в одно и то же значение, сделайте что-нибудь.

Самый естественный и оптимизированный способ сделать это - сделать ваши объекты источников и перегрузить оператор < в этих объектах, а затем в этом операторе вы можете проверить, имеют ли эти объекты одинаковое значение для выполнения ваших " куча кода ".

Вот пример:

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, например.

Смежные вопросы