2009-02-07 5 views
0

제공된 bookfile을 기반으로 파일을 "인코딩"하는 프로그램을 작업 중입니다. 결과 파일에는 각 문자가 숫자로 바뀝니다. 이 숫자는 bookfile에있는 그 편지의 모양과 일치합니다. 따라서 "hello"가 있다면 북 파일에서 'h'를 선택하고, 위치 번호를 찾고 출력에서 ​​바꿉니다.런타임을 기반으로 변수/벡터 만들기

광산이 올바르게 작동하지만 최적화 할 방법을 찾고 있습니다. 지금 당장은 새로운 문자를 가져올 때마다 선택할 오프셋 수의 벡터를 만듭니다. 이 벡터를 "저장"하고 같은 번호를 다시 찾으면 다시 사용할 수 있기를 원합니다.

나는 이것을 어떻게 프로그램 할 것 인가에 관해서 분실하고있다. 예를 들어, 'h'로 읽으면 vector<int> hLocations;으로 저장하고 싶습니다.

어쨌든이 일이 발생 했나요, 아니면 제 정신이 아니 었나요? 나는 이것을하는 함수를 만들려고 생각하고 있었지만, 나를 혼란스럽게하는 부분은 <int>Locations이다. C++ 코드에서 변수를 사용하는 방법이 있습니까? 나는 그것이 내가 정말로 묻고있는 것이라고 생각한다.

답변

3

관심있는 문자가 오프셋 벡터의 키가되도록 std::map<unsigned int, std::vector<unsigned int> >을 사용할 수 있습니다. 그렇게하면 파일의 각 가능한 문자에 대해 N 개의 다른 벡터를 코딩 할 필요가 없습니다.

+0

또는 벡터는 최대 256 개의 항목을 가지므로 잘 작동합니다. –

+0

나는 가능한 문자를위한 공간을 많이 예약 할 필요가 없으므로지도가 마음에 든다. 하지만 맵을 사용하는 것이 더 재미 있습니다. 찾기 및 반복자 쌍을 처리해야하기 때문에 ... –

+0

네가 작동 할 수도 있습니다. 나는 생각한다. (256 - number_of_used_chars) * sizeof (빈 벡터)는 마음을 낭비 할 엄청난 공간이 아니다. 두 번째 요소는 아마도 12 또는 16 바이트이며 총 4KB를 의미합니다. –

0

이 질문은 꽤 오래되었지만 내가 묻는 것은 "C++에 가변 변수 이름이 있습니까?"

PHP는

$foo = 'bar'; 
$bar = 'foobar'; 
echo $$foo; //This outputs foobar 

내가 C++의를 닮아 뭔가를 찾고 있었다 ...이 있습니다.

관련 문제