// argv has argc+1 elements and the last one is a nullptr. For appending
// one element we thus create a new argv by copying the first argc
// elements, append the new option, and then a nullptr.
- std::vector<char *> argv_new(argc + 2);
+ std::vector<char *> argv_new;
for (int i = 0; i < argc; ++i)
- argv_new[i] = argv[i];
+ argv_new.push_back(argv[i]);
+
std::stringstream threads_flag;
#if KOKKOS_VERSION >= 30700
threads_flag << "--kokkos-num-threads=" << MultithreadInfo::n_threads();
threads_flag << "--kokkos-threads=" << MultithreadInfo::n_threads();
#endif
const std::string threads_flag_string = threads_flag.str();
- argv_new[argc] = const_cast<char *>(threads_flag_string.c_str());
- argv_new[argc + 1] = nullptr;
+ argv_new.push_back(const_cast<char *>(threads_flag_string.c_str()));
+ argv_new.push_back(nullptr);
+
// The first argument in Kokkos::initialize is of type int&. Hence, we
// need to define a new variable to pass to it (instead of using argc+1
// inline).
- int argc_new = argc + 1;
+ int argc_new = argv_new.size() - 1;
Kokkos::initialize(argc_new, argv_new.data());
}