Я новичок в C ++. Прежде чем работать с C #. Ниже представлен скрипт на C #. Как я могу сделать то же самое в родном C ++?
Все что мне нужно это:
Я старался std::map
но он не имеет встроенной сортировки по значению или получения ключа по значению. Есть ли в C ++ похожие вещи? sortedlist
в с #?
Большое спасибо!
public static SortedList<int, int> sortedList1 = new SortedList<int, int>();
static void List_Add(int i) // 0 < i < 1000
{
if (!sortedList1.ContainsValue(i))
sortedList1[Environment.TickCount] = i;
}
static void List_Remove(int i) // 0 < i < 1000
{
if (sortedList1.ContainsValue(i))
sortedList1.RemoveAt(sortedList1.IndexOfValue(i));
}
static int List_toInt()
{
int time = 0;
int keys = 0;
bool modifier = false;
foreach (KeyValuePair<int, int> i in sortedList1)
{
if (i.Value > 90) modifier = true;
if (i.Key - time > 200 | modifier | keys > 1000)
{
keys = keys * 1000 + i.Value;
time = i.Key;
}
}
return keys;
}
Похоже, вы поступаете неправильно, поскольку обычно все сортируется с использованием ключей, а запросы выполняются с использованием ключа, не использующего значение. Тем не менее, кажется, std::map<int,int>
поможет вам здесь. Просто используйте ваше значение в качестве ключа карты и ваш ключ в качестве значения (чтобы вы могли выполнять запрос, используя значение). Используйте мультикарту, если дубликаты разрешены.
Вот некоторые инструменты конвертера:
Пожалуйста, посетите следующие ссылки:
Как это:
#include <map>
#include "Winbase.h"
std::map<int, int> sortedList1;
void List_Add(int i) // 0 < i < 1000
{
if (sortedList1.find(i) == sortedList1.end())
sortedList1.insert(std::make_pair<int, int>(GetTickCount(), i));
}
void List_Remove(int i) // 0 < i < 1000
{
if (sortedList1.find(i) != sortedList1.end())
sortedList1.erase(sortedList1.find(i));
}
int List_toInt()
{
int time = 0;
int keys = 0;
bool modifier = false;
for (std::map<int, int>::const_iterator it = sortedList1.cbegin();
it != sortedList1.cend(); it++)
{
if (it->second > 90) modifier = true;
if (it->first - time > 200 || modifier || keys > 1000)
{
keys = keys * 1000 + it->second;
time = it->first;
}
}
return keys;
}