• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 181
  • Last Modified:

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

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.
1 Solution
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()) << ", ";

		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?

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

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now