2010-03-10 4 views
4

좋은 C++을 배운 후, STL 컨테이너와 알고리즘 템플릿 라이브러리에 들어갔습니다. 내 주요 관심사는 다음과 같습니다.은 C++ STL 알고리즘 및 컨테이너가 플랫폼 및 성능면에서 동일합니까?

1)이 라이브러리는 MS, Linux, 다른 OS와 같은 플랫폼에서 동일합니까?

2) STL 컨테이너와 알고리즘을 더 많이 사용하면 프로그램의 품질이나 효율성이 떨어질 것입니다. 모든 요구 사항을 사용자 지정할 수는 없습니다.

3)이 템플릿 라이브러리는 리눅스 시스템 프로그래밍, 커널 모듈에서 사용하기에 좋은가요?

4) 프로그래밍 콘테스트에서이 코드를 사용할 수 있습니다. 코딩 및 압력을 많이 견뎌 낼 수 있기 때문입니다.

+0

+1 - 좋은 질문이 있습니다. –

+0

C 및 Java 프로그래머보다 불공 평한 이점이 있기 때문에 C++ 프로그래머가 STL을 사용할 수 없게 된 경연 대회에 참가했습니다 : P – MSalters

+0

http : /kerneltrap.org/node/2067에서 세 번째 요점에 대해 논의 할 수 있습니다. 그것은 실제로 그것이 호언 장담으로 타락하기 전에 유용한 논의입니다. – pmr

답변

5

1)이 라이브러리는 MS, linux n other os 같은 다른 플랫폼에서 동일합니까? 표준화 된 인터페이스를 제외하고

번호, 구현은 각 컴파일러 스위트에 대한 모든 다른, 때로는 그들은 또한 사용자 지정 확장 같은 hash_map로를 제공합니다.

2) STL 컨테이너와 알고리즘을 많이 사용하면 프로그램의 품질이나 효율성이 떨어질 것입니다. 나는 모든 필요에 맞게 사용자 지정할 수 없다고 생각합니다.

나는 그렇게 생각하지 않는다. 당신이 아주 특별한 필요가 없다면, 품질과 효율성은 스스로 요리하는 것보다 훨씬 낫습니다.

3)이 시스템은 리눅스 시스템 프로그래밍, 커널 모듈에서 사용할 수 있습니까?

커널의 경우 C를 사용하는 것이 더 좋습니다.

4) 마지막으로 프로그램 작성 콘테스트에서이 코드를 사용할 수 있습니다. 왜냐하면 많은 코딩과 압력을 덜어주기 때문입니다.

컨테스트 규칙에 따라 다릅니다.

4

1) 표준 (인터페이스)가 동일합니다. 구현이 다릅니다.

2) 프로그램의 품질 또는 효율성은 기술에만 의존합니다. STL은 사용 및 오용 할 수있는 이점을 제공합니다.

3) 커널 모듈의 경우가 아니며 사용자 모드 응용 프로그램의 경우 예.

4) 일반적으로 C++ 경연 대회는 STL을 허용합니다.

3

1) API가 동일합니다. 표준에 지정된 동작 제한 (예 : O (n)). 특정 구현 업체. 응용 프로그램의 크기 조정에 의존 할 수 있음을 의미합니다.

2)이 질문을하는 동안 코드의 품질과 효율성은 STL을 사용하여 향상시키는 것이 좋습니다.

3) 커널에 없습니다.

4) C++ constests는 STL을 허용해야합니다.

+1

사실, 나는 한때 벡터에서 C-Style 배열로 전환하여 개선했다. – user88637

+0

무엇이 개선 되었습니까? 공연? Debug 또는 Release 빌드를 프로파일 했습니까? – fredoverflow

+0

표준의 제약 조건은 상한이지만 특정 STL 구현이 다른 것보다 더 빠른 코드 (알고리즘 적으로 빠른 코드)를 생성 할 수있는 경우가 있습니다. 예를 들어, '벡터 > :: push_back'은'N '에서 용량을 늘리면 g ++ 구현은 총'O (N * M) '연산에 대해'벡터 '복사 생성자를'N '번 호출합니다 'M'은 내부 벡터의 크기이다). Dinkumware 구현 (VS에서)은 더 큰 새로운 컨테이너에서 비어있는'vector '을 생성하고 'O (N)'비용으로'N' 최적화 된 스왑 연산을 수행합니다. –