나는 vector<MyType>
을 받았으며 간단한 기준을 충족하는 MyTypes 만 포함하는 다른 vector<MyType>
을 원합니다. 일부 데이터 멤버가 뭔가 같음을 나타냅니다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까?C++ 벡터를 필터링하거나 "grep"하는 방법은 무엇입니까?
8
A
답변
17
사용 copy_if
:
#include <algorithm> // for copy_if
#include <iterator> // for back_inserter
std::vector<MyType> v2;
std::copy_if(v1.begin(), v1.end(), std::back_inserter(v2),
[](MyType const & x) { return simple_citerion(x); });
7
부스트의 조금을 사용하여 수행 할 수 있습니다
std::vector<int> v = {1,2,-9,3};
for (auto i : v | filtered(_arg1 >=0))
std::cout << i << "\n";
이 샘플 표현 템플릿 (_arg1 >= 0
)에 의해 정의 된 암시 적 람다에 대한 피닉스를 사용하지만, 당신이 사용할 수있는 부스트 어댑터가있는 호출 가능 (C++ 03 이상)
자세한 내용은 여기를 참조하십시오. L 예 :
+0
또 다른 좋은 방법은 필요한 경우 Boost.Range를 확장하여 결과를 임시로 저장하지 않고 필터링 된 결과에서 새 벡터를 만들 수 있습니다. – Xeo
관련 문제
- 1. FolderBrowserDialog를 필터링하거나 대체 할 수있는 방법은 무엇입니까?
- 2. 선택 단어를 포함하기 위해 grep하는 방법은 무엇입니까?
- 3. C++에서 집합 벡터를 수행하는 방법은 무엇입니까?
- 4. 반복자를 사용하여 벡터를 탐색하는 방법은 무엇입니까? (C++)
- 5. C++ 문자열의 벡터를 반복하는 방법은 무엇입니까?
- 6. c에서 벡터를 복제하는 방법은 무엇입니까?
- 7. 함수 벡터를 만드는 방법은 무엇입니까?
- 8. DLL에서 벡터를 반환하는 방법은 무엇입니까?
- 9. STL 벡터를 정렬하는 방법은 무엇입니까?
- 10. 추력 벡터를 정규화하는 방법은 무엇입니까?
- 11. 다차원 벡터를 예약하는 방법은 무엇입니까?
- 12. 파이썬에서 벡터를 재생하는 방법은 무엇입니까?
- 13. 액체의 컬렉션을 필터링하거나 그룹화하십시오.
- 14. R에서 벡터를 데이터 프레임에 결합하는 방법은 무엇입니까?
- 15. 병렬로 grep하는 방법
- 16. 그게 아니라고 grep하는 방법?
- 17. 하위 디렉토리의 모든 java 파일에서 문자열을 grep하는 방법은 무엇입니까?
- 18. 파이썬을 사용하여 문자열에서 동일한 패턴을 여러 번 grep하는 방법은 무엇입니까?
- 19. 길이가 다른 벡터를 추가하는 방법은 무엇입니까?
- 20. MATLAB에서 벡터를 여러 번 할당하는 방법은 무엇입니까?
- 21. Matlab에서 다른 벡터를 참조하여 벡터를 분할하는 방법은 무엇입니까?
- 22. Octave/MATLAB에서이 벡터를 생성하는 방법은 무엇입니까?
- 23. 전체 벡터를 대기열에 복사하는 방법은 무엇입니까?
- 24. ASCII 바이트 벡터를 문자열로 변환하는 방법은 무엇입니까?
- 25. OpenCL 커널에 C++ 벡터를 전달하고 액세스하는 방법은 무엇입니까?
- 26. C++에서 double dimension 벡터를 저장하는 가장 좋은 방법은 무엇입니까?
- 27. C++에서 OpenCV를 사용하여 mpeg 모션 벡터를 디코딩하는 방법은 무엇입니까?
- 28. C++에서 문자열 벡터를 정수 벡터로 변환하는 방법은 무엇입니까?
- 29. C++ 벡터를 버퍼로 사용합니다.
- 30. c()를 사용하여 벡터를 정의하는 이유는 무엇입니까?
은 젠, 10 초! +1 – Xeo
그러나 'copy_if'는 C++ 11에서만 사용된다는 점에 유의해야합니다. –
@EitanT : C++ 03에 대해'remove_copy_if'를 남용 할 수 있습니다. 단, 술어를 뒤집을 수 있습니다. – Xeo