Проектирование параметризованной структуры в c ++ - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть ряд функций различных базовых типов, которые параметризованы, скажем, числами от 0 до 9, например

    int a[10];
    double b[10];
    char c[10];

Так что имеет смысл организовать их в структуру:

Struct Features {
    int a;
    double b;
    char c;
};
Features f[10];

Однако я должен прочитать эти функции по одной. Например, сначала a [0] ... a [9], затем b [0] ... b [9] и т. Д. Из ввода типа "a_features = 1,2,3,4,5,6,7,8,9,10 "," b_features = 0,5, ... 12,4 "и т. Д. Для такого ввода намного проще прочитать ввод в

int a[10]    

, чем в

Features f[10]

Что такоестандартный дизайн в такой ситуации?

ОБНОВЛЕНИЕ:

Спасибо всем за быстрый ответ - моя главная цель - иметь чистый дизайн, с точки зрения производительности, это не критично. То, что кажется мне несколько уродливым, это то, что без структуры Features у меня будет почти такой же код, повторенный много раз. Например,

parse_features(a, "a_features, src_a); 
parse_features(b, "b_features", src_b);

Если контейнеры являются векторами, а размер (10) исходит от пользователя, мне придется изменять размер каждого вектора отдельно и тому подобное.

1 Ответ

0 голосов
/ 09 ноября 2019

Связано ли целое число a[3] с двойным b[3] и символом c[3]? Если да, то имеет смысл сгруппировать их в структуру.

Если вам нужно прочитать все целые числа, то двойные числа, а затем символы, так и будет. «читать int в f[3].a» так же просто, как «читать int в a[3]».

Если ваш вход структурирован таким образом, нет способа избежать трех циклов. Три цикла в одном и том же массиве могут выглядеть менее изящно, но остальная часть программы (важная часть!) Будет легче понять, если данные сгруппированы логически.

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