std::vector<char> resVec;
...
std::vector<std::string> returnVec;
returnVec.reserve(resVec.size());
for (char ch : resVec) {
returnVec.push_back(std::string(1, ch));
// or: returnVec.emplace_back(1, ch);
}
return returnVec;
В качестве альтернативы:
std::vector<char> resVec;
...
std::vector<std::string> returnVec;
returnVec.reserve(resVec.size());
std::transform(resVec.begin(), resVec.end(), std::back_inserter(returnVec),
[](char ch){ return std::string(1, ch); }
);
return returnVec;
В качестве альтернативы:
std::vector<char> resVec;
...
std::vector<std::string> returnVec(resVec.size());
std::transform(resVec.begin(), resVec.end(), returnVec.begin(),
[](char ch){ return std::string(1, ch); }
);
return returnVec;
Тем не менее, вы можете просто исключить std::vector<char>
и просто заполнить окончательный std::vector<std::string>
непосредственно изstd::map
данные:
std::vector<std::string> commonChars(std::vector<std::string>& A) {
std::vector<std::string> resVec;
std::unordered_map<char, int> mapObj;
for (const auto& str : A) {
for (const auto& letter : str) {
mapObj[letter]++;
}
}
size_t sizeOfInput = A.size();
if (sizeOfInput > 0) {
for (const auto& letter : A[0]) {
auto iter = mapObj.find(letter);
if (iter != mapObj.end()) {
resVec.insert(resVec.begin(), iter->second / sizeOfInput, std::string(1, letter));
}
}
}
return resVec;
}