STL 및 Vector는 기본 정렬 옵션을 제공합니까?STL 및 벡터는 정렬 옵션을 제공합니까?
답변
아마도 std::sort이 필요합니다.
#include <algorithm>
#include <vector>
int
main()
{
std::vector<int> foo;
std::sort(foo.begin(), foo.end());
return 0;
}
두 개의 부스트 라이브러리를 사용하는 유사한 예가 아래에있다.
#include <boost/assign/list_of.hpp>
#include <boost/foreach.hpp>
#include <algorithm>
#include <iostream>
#include <vector>
int
main()
{
std::vector<int> foo = boost::assign::list_of(1)(4)(5)(10)(3)(2);
std::cout << "unsorted" << std::endl;
BOOST_FOREACH(const int i, foo) {
std::cout << i << std::endl;
}
std::sort(foo.begin(), foo.end());
std::cout << "sorted" << std::endl;
BOOST_FOREACH(const int i, foo) {
std::cout << i << std::endl;
}
return 0;
}
기본에 충실하면 코드 예제가 더 좋을 것이라고 생각합니다. 독자가'std :: sort' 예제를 이해하기 위해 두 개의 다른 Boost 라이브러리에 익숙해 지도록 요청하는 것은 약간의 질문 일 것입니다. – jalf
단순한 경우, 부스트를 사용한 정렬과 같은 것은 정당화되지 않을 가능성이 큽니다. – wlk
저는 여러분이 반응하는 것 같아요. 여기에 사용 된 두 개의 Boost 구조체는 Boost에 대한 완전한 초보자라도 이해하기 쉽습니다. 그것들의 사용은 필요하지 않았습니다. 실제로'std :: sort (beginIndex, endIndex)'라인 만 있으면 충분했을 것입니다. 그러나 "독자는 두 개의 Boost 라이브러리에 익숙해야합니다". –
예, stl 알고리즘에 sort()
이 있습니다. 봐야한다 http://www.cplusplus.com/reference/algorithm/sort/
나는 오름차순뿐만 아니라 내림차순으로 정렬 할 수 있습니까? – Naruto
@ Shadow : 물론입니다. 예 :'std :: sort (vec.begin(), vec.end(), std :: greater
오, 고맙습니다. – Naruto
vector
클래스에는 sort
기능이 없습니다.
그러나 모든 반복기 범위에서 작동하는 sort
이 있습니다. 그리고 vector
은 반복자를 노출하지 않습니다.
vec
정렬하려면 :
#include <algorithm>
std::sort(vec.begin(), vec.end());
이것은입니다 당신이하고 싶어하는 것, 부스트는 절대적으로 필요하지 않습니다. – rubenvb
일부 컨테이너 - 임의 액세스 권한이있는 컨테이너 만 해당됩니다. 'list'는 멤버 함수'sort'를 가지고 있고, 정렬 된 연관 컨테이너는 이미 정렬되어 있고, 정렬되지 않은 연관 컨테이너는 정렬 될 수 없습니다. –
완벽을 기하기 위해 정렬해야하는 _how_를 지정할 수 있음을 언급 할 수 있습니다. –
기타의 자신의 답변에서 언급했듯이을, 표준이 :: 분류 기능.
그러나 "기본 정렬 옵션?" T를 정의한 클래스 인 벡터를 정렬하려는 것입니까? 이 경우 클래스에 "operator <"을 구현해야합니다. 예를 들어
,
class Foo
{
public :
Foo();
~Foo();
private :
int c;
};
std::vector<Foo> foovec;
std::sort(foovec.begin(), foovec.end());
은 위의 "표준 : : 일종의"라인이 푸에, 당신이 정의하는 "연산자 <"를 필요로 작동하는지 확인하십시오.
class Foo
{
public :
Foo();
~Foo();
bool operator<(const Foo& rFoo) const;
private :
int c;
};
bool Foo::operator<(const Foo& rFoo) const
{
return(c < rFoo.c);
}
- 1. STL 정렬 질문
- 2. STL 추상 클래스로 정렬
- 3. STL 맵에서 정렬 순서 및 집합
- 4. C++ STL 벡터 정렬 - 손상 및 제로
- 5. 정렬 목록을 사용하여 STL 정렬 기능
- 6. 벡터는 C++
- 7. C++ 벡터는 항상 연속적입니까?
- 8. STL 정렬 알고리즘이 포함 된 SegFault 보류
- 9. 미리 정렬 된 데이터가있는 STL 세트로드 C++
- 10. STL 정렬 알고리즘에 대한 도움이 필요하십니까
- 11. 정렬 된 STL 컨테이너의 키가 허용되는 포인터입니까?
- 12. STL 알고리즘 및 const_iterators
- 13. 템플릿 및 STL 컨테이너
- 14. CUDA 및 STL 벡터
- 15. 위 벡터는 DirectX에서 정확히 무엇을합니까?
- 16. 어떤 무료 C 컴파일러가 더 큰 최적화를위한 옵션을 제공합니까?
- 17. 어떤 옵션을 사용하여 UITableView 정렬 기능을 제공해야합니까?
- 18. stl 벡터의 용량 줄이기
- 19. stl :: set 무작위 액세스 및 업데이트
- 20. C++ 및 STL : 생성자 팩터
- 21. STL 벡터 및 스레드 안전
- 22. OpenCV, Matlab 및 STL 컨테이너
- 23. STL 문자열 및 STL 벡터를 void *로 변환합니까?
- 24. STL 스레드 안전 및 STL 디버깅에 대한 질문
- 25. 벡터는 C++로,과 같이, 같은 객체
- 26. 빠른 정렬 및 병합 정렬
- 27. .stl 파일에서 STL (stereolithography) 개체의 치수 계산
- 28. 이진 검색 C++ STL
- 29. 벡터는 읽기 전용 행렬을 보유하고 있습니까?
- 30. PHP eval + gzinflate 감염 - 공격 벡터는 무엇입니까?
"기본 정렬 옵션"이란 무엇입니까? – jalf