Объединение вектора строк

Я читал Ускоренный C++, и я должен сказать, что это - интересная книга.

В главе 6 я должен использовать функцию из <алгоритма> для конкатенации от вектора <строка> в единственную строку. Я мог использовать, накапливаются, но это не помогает, потому что строковые контейнеры могут только push_back символы.

int main () {
  using namespace std;
  string str = "Hello, world!";
  vector  vec (10, str);
  // Concatenate here?

  return 0;
}

Как я присоединяюсь к строкам вместе?

21
задан Trojan 31 December 2013 в 12:56
поделиться

3 ответа

Если предположить, что это вопрос 6.8, то он не говорит о том, что нужно использовать аккумулирование - он говорит об использовании "библиотечного алгоритма". Однако, вы можете использовать аккумулирование:

#include <numeric>

int main () {
    std::string str = "Hello World!";
    std::vector<std::string> vec(10,str);
    std::string a = std::accumulate(vec.begin(), vec.end(), std::string(""));
    std::cout << a << std::endl;
}

Все, что делает аккумулирование, это устанавливает 'сумму' для третьего параметра, а затем для всех значений 'val' от первого параметра до второго параметра, делает:

sum = sum + val

он возвращает 'сумму'. Несмотря на то, что в объявлено аккумулирование, оно будет работать для всего, что реализует operator+()

53
ответ дан 29 November 2019 в 06:16
поделиться

Как насчет std::copy?

std::ostringstream os;
std::copy( vec_strings.begin(), vec_string.end(), ostream_iterator<string>( os ) );
cout << os.str() << endl;
12
ответ дан 29 November 2019 в 06:16
поделиться

Я не уверен насчет твоего вопроса. В чем проблема? Это просто вопрос петли.

#include<vector>
#include<string>
#include<iostream>

int main () 
{
    std::string str = "Hello World!";
    std::vector<string>  vec (10,str);

    for(size_t i=0;i!=vec.size();++i)
        str=str+vec[i];
    std::cout<<str;
}

EDIT :

Use for_each() from <алгоритм>

Попробуйте следующее:

#include<vector>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
string i;
void func(string &k)
{
  i+=k;
}
int main () {
    string str = "Hello World!";
    vector<string>  vec (10,str);

    for_each(vec.begin(),vec.end(),func);
    cout<<i;
    return 0;
  }
5
ответ дан 29 November 2019 в 06:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: