Applying chain responsibility with IFilter
I thought of something like having a map&lt; std::string, IFilter > for
  being sure that the sequence is in the order that I want. What do you
  think of this?


std::map for such simple case should be avoided. std::map would be more appropriate if you are not sure that your IFilter objects could be inserted in any order by client code and you do have lots of entry. Of course we should measure our program performance by both(.i.e. std::vector or std::map


  Is it good enough? Or this is just making it more complicated and I
  need just to pay attention at push_back.


Yes, it look ok. We should always use more simpler/efficient data structure(std::vector) as our default container unless we have valid reason to do otherwise. 

BTW, is this going to call them in right order (1, 2, 3)?


No, It would be in order of (3,2,1) as std::vector would push_back. We can see that documentation clearly mention like this about push_back

Appends the given element value to the end of the container.



[Filter3()][Filter2()][Filter1()]
   0           1          2