컨테이너 유형을 어떻게 확인할 수 있습니까? 나는.컨테이너 유형 확인
template <class Container1>
void func (Container1 &cont_1)
{
if (cont_1 is list container)
//do stuff
if (cont_1 is vector container)
//do other stuff
}
내가 가질 수있는 두 가지 가능성은 목록과 벡터뿐입니다. list
/vector
의 값 유형을 모르므로 vector<char>
또는 vector<int>
등이 가능하므로 벡터 또는 목록을 가져 오는 정보 만 얻으려고합니다. 나는 typeid
과 type info
을 보았지만 실제로 끝내지 않았습니다.
오버로드를 사용하지 않는 방법이 있나요? 이 if 문을 제외하고는 완전히 같은 함수가 있다면, 모든 것을 두 번 가지지 않는 것이 좋지 않을까요? – SemtexB
@SemtexB 아마도'if'의 내용이 뭔가를합니다. 따라서 오버로드 된 함수에 넣으십시오. – juanchopanza
@SemtexB 또한 반복 코드를 다른 함수로 추출하여 과부하 또는 역방향으로 호출하여 조건부 항목 만 수행하고 원래 func에서 호출하는 func_if를 생성 할 수 있습니다. –