int [] 목록에서 push 항목을 std :: stack에 병렬로 얻는 간단한 방법은 무엇입니까? 당신은 스택에 목록에서 "멀티 푸시"요소, 당신은 기본적으로 스택은 단지 컨테이너 어댑터는 사실 사용하려면병렬로 std :: stack을 푸시하는 방법은 무엇입니까?
-2
A
답변
1
:
#include <iostream>
#include <list>
#include <stack>
template <typename T>
class My_stack final : std::stack<T, std::list<T>> {
public:
using std::stack<T, std::list<T>>::stack;
using std::stack<T, std::list<T>>::push;
using std::stack<T, std::list<T>>::pop;
using std::stack<T, std::list<T>>::top;
using std::stack<T, std::list<T>>::empty;
using std::stack<T, std::list<T>>::swap;
using std::stack<T, std::list<T>>::size;
using std::stack<T, std::list<T>>::emplace;
using std::stack<T, std::list<T>>::operator =;
void push_elements(std::list<T>& l,
typename std::list<T>::const_iterator begin,
typename std::list<T>::const_iterator end)
{
this->c.splice(std::end(this->c), l, begin, end);
}
};
int main()
{
std::list l{ 1, 2, 3, 4, 5 };
My_stack<int> st{ l };
st.push_elements(l, std::begin(l), std::next(begin(l), 3));
std::cout << st.top() << ' ' << st.size() << '\n';
}
참고가 삽입 기능으로 이동 목록에서 스택으로 요소를 복사하는 것이 아니라 매우 효율적입니다. 필요에 따라이 체계를 사용하여 deque
또는 vector
에 기반한 유사한 기능을 구현할 수 있습니다.
1
확실하지이 루프이라고 생각하지만 "병렬"무엇을 의미합니까 당신이 std::for_each
및 람다
#include <algorithm>
#include <stack>
int main()
{
std::stack<int> s;
int list[5] = { 1,2,3,4,5 };
std::for_each(std::begin(list), std::end(list), [&s](int i) { s.push(i); });
return 0;
}
관련 문제
- 1. std :: stack을 동시에 처리하는 올바른 방법
- 2. [C++] std :: stack을 사용하여 파일/디렉토리 계층을 처리하는 방법?
- 3. X-Pack없이 Elastic Stack을 모니터링하는 방법은 무엇입니까?
- 4. ABPeoplePickerNavigationController를 푸시하는 방법은 무엇입니까?
- 5. 텍스트에서 단어 분리를 푸시하는 방법은 무엇입니까?
- 6. Stack을 구현하는 효율적인 알고리즘은 무엇입니까?
- 7. Windows에서 git을 푸시하는 방법은 무엇입니까?
- 8. 뷰 iphone을 푸시하는 방법은 무엇입니까?
- 9. FileList에서 파일을 푸시하는 방법은 무엇입니까?
- 10. 배열에서 객체를 푸시하는 방법은 무엇입니까?
- 11. 드래프트를 Gerrit로 푸시하는 방법은 무엇입니까?
- 12. 특정보기로 viewController를 푸시하는 방법은 무엇입니까?
- 13. cloud9에서 github을 푸시하는 방법은 무엇입니까?
- 14. 이진 데이터를 std :: string으로 푸시하는 방법?
- 15. 작업을 병렬로 실행하는 방법은 무엇입니까?
- 16. 함수를 병렬로 실행하는 방법은 무엇입니까?
- 17. 병렬로 SHA를 계산하는 방법은 무엇입니까?
- 18. std :: mutex를 검사하는 방법은 무엇입니까?
- 19. Stack을 사용하여 두 개의 별도의 관련 패키지를 개발하는 방법은 무엇입니까?
- 20. concurency를 제대로 처리하고 Service Stack을 통해이를 노출하는 방법은 무엇입니까?
- 21. Stack을 사용하여 다른 프로젝트에서 개인 라이브러리를 가져 오는 방법은 무엇입니까?
- 22. Mean stack을 사용하여 mongo collection에 데이터를 게시하는 방법은 무엇입니까?
- 23. std :: regex_token_iterator를 std :: vector에 복사하는 방법은 무엇입니까?
- 24. Jenkins에서 Git Branch로 푸시하는 방법은 무엇입니까?
- 25. Laravel : 모델을 변수로 푸시하는 방법은 무엇입니까?
- 26. 배지 번호없이 알림을 푸시하는 방법은 무엇입니까?
- 27. 프라임 차트로 업데이트를 푸시하는 방법은 무엇입니까?
- 28. NASM에서 64 비트 int를 푸시하는 방법은 무엇입니까?
- 29. UICollectionView를 프로그래밍 방식으로 푸시하는 방법은 무엇입니까?
- 30. 키를 사용하여 객체의 배열을 푸시하는 방법은 무엇입니까?
를 사용할 수 있는지? 멀티 스레딩을 사용 하시겠습니까? 아니면 단순히 모든 정수를 스택에 밀어 넣기를 원하십니까? –
한 번에 목록에서 요소를 푸시 할 수있는 방법이 있습니까? 네, 여러 항목을 빨리 푸는 방법을 알고 싶습니다. (for 루프를 사용하는 대신 parrallel 호출을 수행하고 더 빨리 푸시 할 수 있음) – user1730250
다중 스레드를 사용하는 경우 다중 동시 액세스를 방지하기 위해 뮤텍스 또는 다른 잠금을 사용해야합니다. – SoronelHaetir