feat: implement join-string functor

This commit is contained in:
Michael Mandl 2024-03-15 10:39:42 +01:00
parent 26e9b317ec
commit 659e010a70
Signed by: mandlm
GPG key ID: 4AA25D647AA54CC7

View file

@ -1,8 +1,39 @@
#include <iostream> #include <iostream>
#include <numeric>
#include <vector>
class join_strings_functor {
private:
std::string separator_ = " ";
public:
join_strings_functor() = default;
join_strings_functor(std::string_view separator) : separator_(separator) {}
std::string operator()(const std::string &left,
const std::string &right) const {
return left + separator_ + right;
}
};
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
std::cout << "Functor" << std::endl; std::cout << "Functor" << std::endl;
std::vector<std::string> names = {"Albert", "Bernd", "Cora",
"Dave", "Emil", "Frank"};
auto space_joined_string =
std::accumulate(std::next(names.begin()), names.end(), names.front(),
join_strings_functor());
std::cout << "Space-joined string: " << space_joined_string << std::endl;
auto comma_joined_string =
std::accumulate(std::next(names.begin()), names.end(), names.front(),
join_strings_functor(", "));
std::cout << "Comma-joined string: " << comma_joined_string << std::endl;
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }