Хранение значений для вектораэлементы в отдельном контейнере - PullRequest
0 голосов
/ 31 января 2019

В моем коде есть следующая структура:

std::vector<std::vector<int>> elems;

, и каждый элемент в элементах (т.е. каждый вектор целых чисел) имеет определенное двойное значение, которое мне нужно отслеживать.Элементы не имеют какой-либо уникальной функции, которую можно было бы использовать в качестве ключа на карте (я пытался использовать их указатели, но вектор элементов продолжает расти и перетасовываться во время программы, поэтому их адрес меняется).

Учитывая этоЯ думал о создании класса, содержащего вектор и двойник, и изменении структуры таким образом:

std::vector<MyClass> elems;

, таким образом, получая значение прямо там, но я не знаю, насколько это повлияет на производительность.У кого-нибудь есть лучшие решения или может указать мне где-нибудь, где я мог бы найти больше информации об этом случае?
Заранее всем спасибо.

1 Ответ

0 голосов
/ 31 января 2019

Я думал о создании класса, содержащего вектор и двойник, и изменении структуры следующим образом:

std::vector<MyClass> elems;

Это абсолютно правильный и разумный выбор для группировки * 1006.* значение вместе с коллекцией целых чисел.Я бы предложил использовать простой struct как этот

struct DoubleAndVec {
    double value;
    std::vector<int> vec;
};

и уделить минуту, чтобы подумать о хороших именах, они здесь необходимы (MyClass например, может быть улучшено, а также DoubleAndVec).

Когда дело касается производительности, не думайте об этом, пока не столкнетесь с узким местом.Если вы это сделаете, профилируйте и проверьте, влияет ли этот выбор дизайна на производительность вашей программы - я сильно сомневаюсь в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...