Reserve vector capacities and use emplace_back for constructing vectors (#1464) (#1489)

* Reserve vector capacities and use emplace_back for constructing vectors

Signed-off-by: Stephen Brawner <brawner@gmail.com>

* Use resize instead of reserve

Signed-off-by: Stephen Brawner <brawner@gmail.com>

* Remove push_back

Signed-off-by: Stephen Brawner <brawner@gmail.com>

Co-authored-by: brawner <brawner@gmail.com>
This commit is contained in:
Jacob Perron 2020-12-08 14:46:36 -08:00 committed by GitHub
parent b132a2b0cd
commit 3dddfd7d93
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -265,11 +265,13 @@ public:
throw std::runtime_error( throw std::runtime_error(
"Can't get available states. State machine is not initialized."); "Can't get available states. State machine is not initialized.");
} }
resp->available_states.resize(state_machine_.transition_map.states_size);
for (unsigned int i = 0; i < state_machine_.transition_map.states_size; ++i) { for (unsigned int i = 0; i < state_machine_.transition_map.states_size; ++i) {
lifecycle_msgs::msg::State state; resp->available_states[i].id =
state.id = static_cast<uint8_t>(state_machine_.transition_map.states[i].id); static_cast<uint8_t>(state_machine_.transition_map.states[i].id);
state.label = static_cast<std::string>(state_machine_.transition_map.states[i].label); resp->available_states[i].label =
resp->available_states.push_back(state); static_cast<std::string>(state_machine_.transition_map.states[i].label);
} }
} }
@ -286,16 +288,17 @@ public:
"Can't get available transitions. State machine is not initialized."); "Can't get available transitions. State machine is not initialized.");
} }
resp->available_transitions.resize(state_machine_.current_state->valid_transition_size);
for (unsigned int i = 0; i < state_machine_.current_state->valid_transition_size; ++i) { for (unsigned int i = 0; i < state_machine_.current_state->valid_transition_size; ++i) {
lifecycle_msgs::msg::TransitionDescription & trans_desc = resp->available_transitions[i];
auto rcl_transition = state_machine_.current_state->valid_transitions[i]; auto rcl_transition = state_machine_.current_state->valid_transitions[i];
lifecycle_msgs::msg::TransitionDescription trans_desc;
trans_desc.transition.id = static_cast<uint8_t>(rcl_transition.id); trans_desc.transition.id = static_cast<uint8_t>(rcl_transition.id);
trans_desc.transition.label = rcl_transition.label; trans_desc.transition.label = rcl_transition.label;
trans_desc.start_state.id = static_cast<uint8_t>(rcl_transition.start->id); trans_desc.start_state.id = static_cast<uint8_t>(rcl_transition.start->id);
trans_desc.start_state.label = rcl_transition.start->label; trans_desc.start_state.label = rcl_transition.start->label;
trans_desc.goal_state.id = static_cast<uint8_t>(rcl_transition.goal->id); trans_desc.goal_state.id = static_cast<uint8_t>(rcl_transition.goal->id);
trans_desc.goal_state.label = rcl_transition.goal->label; trans_desc.goal_state.label = rcl_transition.goal->label;
resp->available_transitions.push_back(trans_desc);
} }
} }
@ -312,16 +315,17 @@ public:
"Can't get available transitions. State machine is not initialized."); "Can't get available transitions. State machine is not initialized.");
} }
resp->available_transitions.resize(state_machine_.transition_map.transitions_size);
for (unsigned int i = 0; i < state_machine_.transition_map.transitions_size; ++i) { for (unsigned int i = 0; i < state_machine_.transition_map.transitions_size; ++i) {
lifecycle_msgs::msg::TransitionDescription & trans_desc = resp->available_transitions[i];
auto rcl_transition = state_machine_.transition_map.transitions[i]; auto rcl_transition = state_machine_.transition_map.transitions[i];
lifecycle_msgs::msg::TransitionDescription trans_desc;
trans_desc.transition.id = static_cast<uint8_t>(rcl_transition.id); trans_desc.transition.id = static_cast<uint8_t>(rcl_transition.id);
trans_desc.transition.label = rcl_transition.label; trans_desc.transition.label = rcl_transition.label;
trans_desc.start_state.id = static_cast<uint8_t>(rcl_transition.start->id); trans_desc.start_state.id = static_cast<uint8_t>(rcl_transition.start->id);
trans_desc.start_state.label = rcl_transition.start->label; trans_desc.start_state.label = rcl_transition.start->label;
trans_desc.goal_state.id = static_cast<uint8_t>(rcl_transition.goal->id); trans_desc.goal_state.id = static_cast<uint8_t>(rcl_transition.goal->id);
trans_desc.goal_state.label = rcl_transition.goal->label; trans_desc.goal_state.label = rcl_transition.goal->label;
resp->available_transitions.push_back(trans_desc);
} }
} }
@ -336,9 +340,10 @@ public:
get_available_states() get_available_states()
{ {
std::vector<State> states; std::vector<State> states;
states.reserve(state_machine_.transition_map.states_size);
for (unsigned int i = 0; i < state_machine_.transition_map.states_size; ++i) { for (unsigned int i = 0; i < state_machine_.transition_map.states_size; ++i) {
State state(&state_machine_.transition_map.states[i]); states.emplace_back(&state_machine_.transition_map.states[i]);
states.push_back(state);
} }
return states; return states;
} }
@ -347,11 +352,10 @@ public:
get_available_transitions() get_available_transitions()
{ {
std::vector<Transition> transitions; std::vector<Transition> transitions;
transitions.reserve(state_machine_.transition_map.transitions_size);
for (unsigned int i = 0; i < state_machine_.transition_map.transitions_size; ++i) { for (unsigned int i = 0; i < state_machine_.transition_map.transitions_size; ++i) {
Transition transition( transitions.emplace_back(&state_machine_.transition_map.transitions[i]);
&state_machine_.transition_map.transitions[i]);
transitions.push_back(transition);
} }
return transitions; return transitions;
} }