小编Mr.*_*.OY的帖子

是否需要删除保存对象的"对"?

我做了这样一对

typedef std::pair<int, Dish> OrderPair;
Run Code Online (Sandbox Code Playgroud)

当Dish是一个对象.我有一个OrderPair的矢量:

std::vector<OrderPair> orderList;
Run Code Online (Sandbox Code Playgroud)

假设我想从向量中删除一对,当我不想从内存中删除菜时,擦除功能是否足够?我认为答案是肯定的,因为创建一对不是坐在堆中,因此我不需要释放任何内存.请告诉我,如果我错了.

c++ vector c++11

3
推荐指数
1
解决办法
112
查看次数

erlang gen_statem:错误 bad_return_from_state_function

我遇到了一个奇怪的问题。我得到了这个 FSM(代码的内容不是那么无能,所以我删除了它,现在你只能看结构):

start_link() ->
  gen_statem:start_link({local, ?MODULE}, ?MODULE, [], []).


init([]) ->
  io:format ("init", []),
  Data={1},
  {ok, packetsDeliver, Data}.


callback_mode() ->
  [state_functions, state_enter].


packetsDeliver(enter, _OldState, Data) ->
  io:format ("Key1", []),
  {keep_state, Data};

packetsDeliver(info, _OldState, Data) ->
  io:format ("Key2", []),
  {keep_state, Data};


packetsDeliver(cast, _PacketData, Data) ->
  io:format ("Key3", []),
      {next_state, allPacketsDelivered, Data}.

allPacketsDelivered(enter, _OldState, Data) ->
  io:format ("Key4", []),
  {next_state, packetsDeliver , Data}.
Run Code Online (Sandbox Code Playgroud)

我尝试了几件事没有任何成功,我认为写作

{next_state, packetsDeliver , Data}.
Run Code Online (Sandbox Code Playgroud)

将为我提供状态:

packetsDeliver(enter, _OldState, Data)
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

exception exit: {bad_return_from_state_function,
                       {next_state,packetsDeliver,{1}}}
     in function  gen_statem:loop_event_result/9 …
Run Code Online (Sandbox Code Playgroud)

erlang fsm

1
推荐指数
1
解决办法
428
查看次数

std :: vector erase()无法正常工作

我试图在迭代时从OrderPair的向量中擦除特定元素,但它不能像我期望的那样工作.我试图删除每一个OrderPairid(第一),等于customer_Id.我做以下事情:

for(std::vector<OrderPair>::iterator i = source_Orders.begin(); i != source_Orders.end();)
{
      if((*i).first == customer_Id)
      {
          dest_Orders.push_back(*i);
          i = source_Orders.erase(i);
      }
      else
      {
          i++;
      }
 }
// definition of OrderPair
typedef std::pair<int, Dish> OrderPair;
// definition of OrderPair
enum DishType{
    VEG, SPC, BVG, ALC
};
// definition of OrderPair
class Dish{
private:
    const int id;
    const std::string name;
    const int price;
    const DishType type;
};
Run Code Online (Sandbox Code Playgroud)

当迭代器指向一个符合if条件的元素时,(我可以看到调试它指向正确的元素),命令dest_Orders.push_back(*i);按预期工作,然后我试图擦除我移动到的元素dest_Orders,并且继续下一次迭代.但是,结果是删除了向量中的最后一个元素source_Orders.

我在这做错了什么?

提前致谢.

c++ vector

0
推荐指数
1
解决办法
67
查看次数

标签 统计

c++ ×2

vector ×2

c++11 ×1

erlang ×1

fsm ×1