대기열 벡터를 만드는 방법과 요소를 추가하는 방법은 무엇입니까? 벡터 내부의 큐 에 새 요소 -insert 벡터
에 새로운 큐 -insert
:대기열 벡터
나는 다음을 수행 할 수 있어야합니다.
: D
대기열 벡터를 만드는 방법과 요소를 추가하는 방법은 무엇입니까? 벡터 내부의 큐 에 새 요소 -insert 벡터
에 새로운 큐 -insert
:대기열 벡터
나는 다음을 수행 할 수 있어야합니다.
: D
vector<queue<int>> vec; // vector of queues
vec.push_back(queue<int>()); // add a queue
vec[0].push(1); // push 1 into queue number 0.
당신은 같은 것을 수행 할 수 있습니다
int main(void)
{
typedef std::queue<int> Q;
std::vector<Q> v;
//Add a new queue to vector
v.push_back(Q());
//Add an element to the queue
v[0].push(1);
return 0;
}
typedef std::queue<int> IntQueue;
typedef std::vector<IntQueue> IntQueueVector
IntQueueVector myVector;
1)
myVector.push_back(IntQueue());
2)
을큐에는 std :: vector에서 사용할 수있는 의미가 있으므로 추가 할 때 다른 벡터처럼 사용할 수 있습니다. 예를 들어 push_back을 사용하여 벡터를 큐에 추가 할 수 있습니다.
대기열에 삽입하는 것은 한쪽 끝으로 밀어 넣을 수 있기 때문에 push()를 사용하는 것입니다. operator [] 예 : queuevec[i]
을 통해 대기열에 액세스 할 수 있습니다. 여기서 i는 사용하려는 대기열의 번호입니다.
멀티 스레딩 컨텍스트에서 두 개의 다른 스레드가 잠금없이 벡터 내의 두 개의 다른 큐에 액세스하는 것이 안전하지만 두 스레드가 동일한 큐에 액세스하는 것이 안전하지 않습니다. 벡터에 대기열을 추가하면이 기간 동안 벡터의 다른 모든 대기열이 무효화 될 수 있으므로이 동작을 수행하려면 뮤텍스를 잠 가야합니다.
C++ 98에서 두 개의 꺾쇠 괄호 사이의 공백을 잊지 마십시오. 그렇지 않으면 오른쪽 시프트 연산자 인 – fredoverflow
typedef의 FTW!로 해석됩니다. :) –
@Moo :이 경우 동의하지 마십시오. @Fred : 사실, C++ 03. 그리고 나는 그렇지 않습니다. – ybungalobill