Inserting values into a vector of multimap
I have this structure based multimap and a vector for this structure:
typedef std::multimap<char, int> tr;
vector <tr> transitions;
I want to fill the array with values like:
0 0 a
0 1 a
1 1 b
1 2 c
1 3 c
which represent the transitions of an automaton, and i use a vector of std::multimap for the transitions. This assumes that each state corresponds to an integer. How I could do this?. I try:
for (j=0; j<numberTransitions;j++)
cin>> stateOrigin>>stateDestination>>transitionCharacter;
transitionsStates.insert(pair<char, int>(transitionCharacter, stateDestination));
transitions.push_back (transitionsStates);
But I'm not sure if it's correct. Any suggestions?
c++ stl multimap
add a comment |
I have this structure based multimap and a vector for this structure:
typedef std::multimap<char, int> tr;
vector <tr> transitions;
I want to fill the array with values like:
0 0 a
0 1 a
1 1 b
1 2 c
1 3 c
which represent the transitions of an automaton, and i use a vector of std::multimap for the transitions. This assumes that each state corresponds to an integer. How I could do this?. I try:
for (j=0; j<numberTransitions;j++)
cin>> stateOrigin>>stateDestination>>transitionCharacter;
transitionsStates.insert(pair<char, int>(transitionCharacter, stateDestination));
transitions.push_back (transitionsStates);
But I'm not sure if it's correct. Any suggestions?
c++ stl multimap
add a comment |
I have this structure based multimap and a vector for this structure:
typedef std::multimap<char, int> tr;
vector <tr> transitions;
I want to fill the array with values like:
0 0 a
0 1 a
1 1 b
1 2 c
1 3 c
which represent the transitions of an automaton, and i use a vector of std::multimap for the transitions. This assumes that each state corresponds to an integer. How I could do this?. I try:
for (j=0; j<numberTransitions;j++)
cin>> stateOrigin>>stateDestination>>transitionCharacter;
transitionsStates.insert(pair<char, int>(transitionCharacter, stateDestination));
transitions.push_back (transitionsStates);
But I'm not sure if it's correct. Any suggestions?
c++ stl multimap
I have this structure based multimap and a vector for this structure:
typedef std::multimap<char, int> tr;
vector <tr> transitions;
I want to fill the array with values like:
0 0 a
0 1 a
1 1 b
1 2 c
1 3 c
which represent the transitions of an automaton, and i use a vector of std::multimap for the transitions. This assumes that each state corresponds to an integer. How I could do this?. I try:
for (j=0; j<numberTransitions;j++)
cin>> stateOrigin>>stateDestination>>transitionCharacter;
transitionsStates.insert(pair<char, int>(transitionCharacter, stateDestination));
transitions.push_back (transitionsStates);
But I'm not sure if it's correct. Any suggestions?
c++ stl multimap
c++ stl multimap
edited Nov 11 '18 at 3:32
Cœur
17.7k9106145
17.7k9106145
asked May 17 '12 at 23:00
franvergara66franvergara66
4,048134784
4,048134784
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You never use stateOrigin, so I'm pretty sure it's wrong (unless I've completely misunderstood your intent). I think what you want is more like this:
typedef std::pair<int, char> trigger;
std::map<trigger, int> transitions;
⋮
transitions.insert(make_pair(make_pair(orig, chr), dest));
To drive the state machine, you'd use something like this:
auto newState = transitions.find(make_pair(oldState, inputChar));
if (newState != transitions.end())
state = newState;
Also note that with C++11 you probably want to use std::unordered_map
instead, unless you need efficient access to all the triggers for a given state.
What is edge in:std::map<edge, int> transitions;
?
– franvergara66
May 17 '12 at 23:19
Sorry, I changed the typedef, but forgot to change its usage. I've fixed it now.
– Marcelo Cantos
May 17 '12 at 23:20
Im trying to adapt this pseudocode proposed by Konrad Rudolph
– franvergara66
May 17 '12 at 23:35
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f10644626%2finserting-values-into-a-vector-of-multimap%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You never use stateOrigin, so I'm pretty sure it's wrong (unless I've completely misunderstood your intent). I think what you want is more like this:
typedef std::pair<int, char> trigger;
std::map<trigger, int> transitions;
⋮
transitions.insert(make_pair(make_pair(orig, chr), dest));
To drive the state machine, you'd use something like this:
auto newState = transitions.find(make_pair(oldState, inputChar));
if (newState != transitions.end())
state = newState;
Also note that with C++11 you probably want to use std::unordered_map
instead, unless you need efficient access to all the triggers for a given state.
What is edge in:std::map<edge, int> transitions;
?
– franvergara66
May 17 '12 at 23:19
Sorry, I changed the typedef, but forgot to change its usage. I've fixed it now.
– Marcelo Cantos
May 17 '12 at 23:20
Im trying to adapt this pseudocode proposed by Konrad Rudolph
– franvergara66
May 17 '12 at 23:35
add a comment |
You never use stateOrigin, so I'm pretty sure it's wrong (unless I've completely misunderstood your intent). I think what you want is more like this:
typedef std::pair<int, char> trigger;
std::map<trigger, int> transitions;
⋮
transitions.insert(make_pair(make_pair(orig, chr), dest));
To drive the state machine, you'd use something like this:
auto newState = transitions.find(make_pair(oldState, inputChar));
if (newState != transitions.end())
state = newState;
Also note that with C++11 you probably want to use std::unordered_map
instead, unless you need efficient access to all the triggers for a given state.
What is edge in:std::map<edge, int> transitions;
?
– franvergara66
May 17 '12 at 23:19
Sorry, I changed the typedef, but forgot to change its usage. I've fixed it now.
– Marcelo Cantos
May 17 '12 at 23:20
Im trying to adapt this pseudocode proposed by Konrad Rudolph
– franvergara66
May 17 '12 at 23:35
add a comment |
You never use stateOrigin, so I'm pretty sure it's wrong (unless I've completely misunderstood your intent). I think what you want is more like this:
typedef std::pair<int, char> trigger;
std::map<trigger, int> transitions;
⋮
transitions.insert(make_pair(make_pair(orig, chr), dest));
To drive the state machine, you'd use something like this:
auto newState = transitions.find(make_pair(oldState, inputChar));
if (newState != transitions.end())
state = newState;
Also note that with C++11 you probably want to use std::unordered_map
instead, unless you need efficient access to all the triggers for a given state.
You never use stateOrigin, so I'm pretty sure it's wrong (unless I've completely misunderstood your intent). I think what you want is more like this:
typedef std::pair<int, char> trigger;
std::map<trigger, int> transitions;
⋮
transitions.insert(make_pair(make_pair(orig, chr), dest));
To drive the state machine, you'd use something like this:
auto newState = transitions.find(make_pair(oldState, inputChar));
if (newState != transitions.end())
state = newState;
Also note that with C++11 you probably want to use std::unordered_map
instead, unless you need efficient access to all the triggers for a given state.
edited May 17 '12 at 23:20
answered May 17 '12 at 23:14
Marcelo CantosMarcelo Cantos
144k31284329
144k31284329
What is edge in:std::map<edge, int> transitions;
?
– franvergara66
May 17 '12 at 23:19
Sorry, I changed the typedef, but forgot to change its usage. I've fixed it now.
– Marcelo Cantos
May 17 '12 at 23:20
Im trying to adapt this pseudocode proposed by Konrad Rudolph
– franvergara66
May 17 '12 at 23:35
add a comment |
What is edge in:std::map<edge, int> transitions;
?
– franvergara66
May 17 '12 at 23:19
Sorry, I changed the typedef, but forgot to change its usage. I've fixed it now.
– Marcelo Cantos
May 17 '12 at 23:20
Im trying to adapt this pseudocode proposed by Konrad Rudolph
– franvergara66
May 17 '12 at 23:35
What is edge in:
std::map<edge, int> transitions;
?– franvergara66
May 17 '12 at 23:19
What is edge in:
std::map<edge, int> transitions;
?– franvergara66
May 17 '12 at 23:19
Sorry, I changed the typedef, but forgot to change its usage. I've fixed it now.
– Marcelo Cantos
May 17 '12 at 23:20
Sorry, I changed the typedef, but forgot to change its usage. I've fixed it now.
– Marcelo Cantos
May 17 '12 at 23:20
Im trying to adapt this pseudocode proposed by Konrad Rudolph
– franvergara66
May 17 '12 at 23:35
Im trying to adapt this pseudocode proposed by Konrad Rudolph
– franvergara66
May 17 '12 at 23:35
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f10644626%2finserting-values-into-a-vector-of-multimap%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown