Как реализовать поиск по первой букве строки и вывод найденных строк?
напишите в лоб
char c = '.';// нужный символ
for (size_t i = 0; i < vec.size(); i++) {
if (vec[i].length() < 1) continue;
if (vec[i][0] == c) cout << "vec[i] << endl;
}
по желанию, цикл можно заменить на for(auto s : vec) и чуточку поправить тело.
std::vector<std::string> v;
v.push_back(std::string("abc"));
v.push_back(std::string("dbc"));
v.push_back(std::string("fbc"));
v.push_back(std::string("fbcd"));
struct find_func
{
char m_letter;
find_func(const char letter)
:m_letter(letter)
{ }
bool operator()(const std::string &value) const
{
return (value[0] == m_letter);
}
};
do
{
res = std::find_if(v.begin(), v.end(), find_func('f'));
if (res != v.end())
{
// делаем что нам надо со строкой *res
res ++;
}
} while (res != v.end();
Наверное есть варианты и короче - чтобы результат поиска сразу в массив записывался например
вот попроще :)
struct find_func
{
char m_letter;
find_func(const char letter)
:m_letter(letter)
{ }
bool operator()(const std::string &value) const
{
return (value[0] == m_letter);
}
};
std::vector<std::string> v;
v.push_back(std::string("abc"));
v.push_back(std::string("dbc"));
v.push_back(std::string("fbc"));
v.push_back(std::string("fbcd"));
std::vector<std::string> res(v.size());
std::copy_if(v.begin(), v.end(), res.begin(), find_func('f'));
А с лямбда еще проще
std::vector<std::string> v;
v.push_back(std::string("abc"));
v.push_back(std::string("dbc"));
v.push_back(std::string("fbc"));
v.push_back(std::string("fbcd"));
std::vector<std::string> res(v.size());
std::copy_if(v.begin(), v.end(), res.begin(), [](const std::string& value) {return (value[0] == 'f');});
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости