2009-04-26 2 views
0

일부 키 -> 값 쌍을 포함하는 파일을 공백으로 구분했습니다. 다음은 아래의 형태의 구조에로드 할 수 있습니다파일에서 C++의 해시 유형 구조에 값 추가

parameterFeatureVector(10, 20); 

그리고 같은가에로드되는 기대 : 그래서 위의

#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; 
} 

, 나는 다음과 같은 값을 전달할 수 있습니다 'param'구조. 위의 값은 파일에서 가져온 것입니다. 어떻게 구현할 것인가? 위의 내용이 명확하지 않은 경우 언제든지 다시 문의하십시오.

답변

1

이름 "A"를 특정 구조 필드로 변환하는 방법을 묻는 중입니까? 그렇다면, 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

키 값 쌍의 모음을 관리하려고한다고 가정합니다. 파일에 사용 된 키 값 쌍의 유형이 확실하지 않습니다.

이러한 목적으로 연관 컨테이너 std::map을 사용할 수 있습니다.

std::map<Ta,Tb> aCollectionOfKeyValuePairs; 

여기서

  • 타행 - 파라미터
  • TB의 유형 - 파라미터 B의 EX

유형 : 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);