In C++11 how do I create a map of queues?

anAppBuilder
anAppBuilder used Ask the Experts™
on
How do I create a map of queues and dynamically add queues to it?  Suppose I have
map<string,queue<string>> myQueues;

Open in new window

 I am doing this from a method in a class so while the following is legal, it doesn't do the job
queue<string> q1;
myQueues["foo"] = q1;

Open in new window

What I really want to do is something like this (not legal tho)
myQueues["bar"] = new queue<string>;

Open in new window

What's the legal way to do this?

Just to be clear this is a simplified and contrived example to make the question simple. In the real code, I have a producer thread managed by a class.  The map is an instance variable of the class. The class needs to sometimes dynamically create a new consumer thread and a queue to communicate with it.  The real queues need to be thread-safe queues and the map variable is actually some kind of a handle, but to keep this question simple I'm posing it with standard classes.
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Hi anAppBuilder,

what do you mean with it doesn't do the job?

Here I wrote a little test and IMO it works as expected:
	using namespace std;

	map<string,queue<string>> myQueues;

	queue<string> q;

	q.push( "Hello" );
	q.push( "World" );

	myQueues["foo"] = q;

	myQueues["bar"].push( "Another" );
	myQueues["bar"].push( "queue" );

	for ( auto i = myQueues.begin(); i != myQueues.end(); i++ )
	{
		cout << "Key: " << i->first << endl << "Values: ";

		while ( false == i->second.empty() )
		{
			cout << (i->second.front()) << ", ";
			i->second.pop();
		}

		cout << endl;
	}

Open in new window

The output is:
Key: bar
Values: Another, queue,
Key: foo
Values: Hello, World,

Open in new window

Please could you describe more detailed what problems you have with it?

ZOPPO

Author

Commented:
Thank you, Zoppo.   It does work.  I must have had some other problem

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial