str, string ch) {
vector<string> v;
int i = 0;
int s = 0;
int e = str.find(ch, s);
while (e < str.length()) {
v.insert(v.begin() + i, str.substr(s, e - s));
s = e + ch.length();
e = str.find(ch, s);
i++;
}
v.insert(v.begin() + i, str.substr(s, str.length() - s));
return v;
}
since returning a vector by value is not efficient, I wonna know if there is any way to fix it or not.
there is some tricks like decalring vector in the split function static and then return it by reference, or passing a pointer to an empty vector to function, change it and then return it. but I wonna use a better way. Is there any?
returning a std::vector by value is fairly efficent
std::move my dude
this is quite efficient. the compiler will see the return statement and convert the lvalue to an rvalue and perform move construction automatically.
Обсуждают сегодня