First off, the overhead a single function call, especially if non-virtual, is really not something to worry about unless you have done proper benchmarks and have determined it's actually what's slowing down the program more than any surrounding code.
That being said, the "inline" keyword is almost useless these days and only provides a subtle hint to the compiler. If you have a function that looks like
1 2 3 4
|
void my_func(a, b, c)
{
my_other_func(2.0, a, b, c);
}
| |
It is very likely that it will be inlined because it couldn't make executable code bloat.
______________________
Efficiency aside, in my opinion it defeats the purpose of encapsulation if the interface of your class isn't treated as a solid object, so having a method that returns a reference to the vector isn't necessarily a bad thing compared to the alternative of having to re-invent every vector function (size, push_back, etc). But every case is unique, go with what you think provides a better interface to the user of the class.
_______________________
Also, I don't know what your class specifically looks like, but if it's basically just a wrapping around std::vector<Thing>, it might be easier to just use non-class functions, ex:
void do_things_with(std::vector<Thing>& thing_list, double t);
But my suggestions are probably more trouble then it's worth,
tl;dr the compiler will do its job optimizing away function call overhead.