Quick actions

cmd+k|ctrl+k

Navigation

Languages

Untitled

Snippet info

Language

Cpp

Visibility

unlisted

Author

legacy-anonymous

Created

2020-06-29T21:41:33Z

Updated

2020-06-29T21:41:33Z

#include <algorithm>
#include <iostream>
#include <sstream>
#include <iterator>
#include <vector>

template<typename VarListType>
std::vector<std::string> GetArgStrList(const VarListType &Vars) {
    std::vector<std::string> ArgList;
    ArgList.reserve(Vars.size());
    std::transform(Vars.begin(), Vars.end(), std::back_inserter(ArgList), 
        [](const auto &Arg) {  // C++14
            std::stringstream Stream;
            Stream << Arg;
            return Stream.str();
        });
    return ArgList;
}

template<typename FirstListType, typename... MoreListTypes>
std::vector<std::string>
GetArgStrList(const FirstListType &Vars,
              const MoreListTypes &...MoreVars) {
    auto MoreArgStrList = GetArgStrList(MoreVars...);
    std::vector<std::string> ArgList;
    ArgList.reserve(MoreArgStrList.size() * Vars.size());
    
    for (auto &Var : Vars) {
        for (auto &ArgStr : MoreArgStrList) {
            std::stringstream Stream;
            Stream << Var << " " << ArgStr;
            ArgList.push_back(Stream.str());
        }
    }
    return ArgList;
}

int main() {
    auto VarA = {5, 6, 7, 8};
    auto VarB = {0.3, 0.5};
    auto VarC = {"5566", "Energy", "MayDay"};
    auto ArgStrList = GetArgStrList(VarA, VarB, VarC);

    for (auto &ArgStr : ArgStrList) {
        std::cout << "system(exe " << ArgStr << ")" << std::endl;
    }
    return 0;
}
INFO