Добавление значений из файла в структуру типа хеша в C ++ - PullRequest
0 голосов
/ 26 апреля 2009

У меня есть разделенный пробелами файл, который содержит несколько пар ключ -> значение. Они должны быть загружены в структуру типа, указанного ниже:

#define FV_PARAM1 "A"
#define FV_PARAM2 "B"

parameter_t & parameterFeatureVector (
        parameter_t     & param,
        int             param1,
        int             param2,
) {

    param.addParam(FV_PARAM1, param1);
    param.addParam(FV_PARAM2, param2);

    return param;
}

Итак, к вышесказанному я могу передать следующие значения:

parameterFeatureVector( 10, 20 );

И я ожидаю, что то же самое будет загружено в структуру 'param'. Вышеуказанные значения взяты из файла. Как бы я пошел о реализации того же. Если вышеупомянутое не ясно, не стесняйтесь возвращаться к нему.

Ответы [ 2 ]

1 голос
/ 26 апреля 2009

Я так понимаю, вы спрашиваете, как перевести имя «А» в определенное поле структуры? Если это так, C ++ не имеет встроенного способа сделать это - вы должны написать функцию:

void Add( parameter_t & p, const std::string & name, int value ) {
  if ( name == "A" ) {
      p.param1 = value;
  }
  else if ( name == "B" ) {
      p.param2 = value;
  }
  else if ( .... ) {   // more name tests here
  }

}

Однако я бы предложил не делать этого, а вместо этого использовать карту:

std::map <std::string, int> params;

тогда вы можете сказать что-то вроде:

params["A"] = 42;
0 голосов
/ 26 апреля 2009

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

Для этой цели вы можете использовать ассоциативный контейнер std :: map .

std::map<Ta,Tb> aCollectionOfKeyValuePairs;

где

  • Ta - тип параметра A
  • Tb - тип параметра B

Например: если Ta ​​и Tb равны int, то

std::map<int,int> aCollectionOfKeyValuePairs;

void parameterFeatureVector (  int param1, int param2)
{
     //insert into the map key==>value
    aCollectionOfKeyValuePairs[param1] = param2;
}

Тогда для вставки вы можете позвонить:

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