C++ 使用迭代器连接向量中的元素

C++ 使用迭代器连接向量中的元素,c++,vector,iterator,C++,Vector,Iterator,如何使用myVec上的迭代器输出bob hey bob hey joe bob hey joe doe 任何帮助提示或帮助都将不胜感激您可以使用与cout完全相同的stringstream。它们将以字符串形式保存,而不是打印到屏幕上。可以使用.str访问该字符串 见此: 您的代码如下所示: string s1 = "bob"; string s2 = "hey"; string s3 = "joe"; string s4 = "doe"; vector<string> myVec

如何使用myVec上的迭代器输出bob hey bob hey joe bob hey joe doe


任何帮助提示或帮助都将不胜感激

您可以使用与cout完全相同的stringstream。它们将以字符串形式保存,而不是打印到屏幕上。可以使用.str访问该字符串

见此:

您的代码如下所示:

string s1 = "bob"; 
string s2 = "hey";
string s3 = "joe";
string s4 = "doe";

vector<string> myVec;

myVec.push_back(s1);
myVec.push_back(s2);
myVec.push_back(s3);
myVec.push_back(s4);

这应该可以做到。编辑:修正错误:这应该给你正确的输出,请确认。有一个额外的下一个。

以下应该可以:

using namespace std;

auto it_first = begin(myVec);
auto it_last = begin(myVec) + 2;
while (it_last != end(myVec)) 
    for_each(it_first, it_last++, [](string const & str) { cout << str << " "; });
    cout << endl;
}

您可以尝试使用std::string+运算符和迭代器来表示如下内容


如果您可以使用boost,则可以使用以下内容:

但更有效的解决方案是使用临时字符串:

bob
bob hey
bob hey joe
bob hey joe doe

你希望得到什么样的产出?输出值的类型是:字符串还是整数?输出将是字符串。感谢看到错误定义某些元素标准?是否按顺序112123412345。。。123456789?你遇到了一个算法的困难,还是C++给你带来了问题?数字是个坏例子。我已经编辑了使它更清晰我想他想打印像11223…forit=myVec.begin;它=myVec.end++信息技术{ssCool,看起来我不明白这个问题:pWhy next?我想他想包括第一个元素。而且,如果向量包含的元素少于2个,这可能会失败。我更喜欢stringstream而不是重复的字符串串联,但我想在这种情况下性能并不重要。@Excelcius是的,对。还有,OPs original question与字符串的串联有关;
for (auto it = myVec.begin(), end = myVec.end(); it != end; ++it)
{
    for (auto it2 = myVec.begin(); it2 != (it + 1); ++it2)
    {  
        std::cout << *it2 << " ";
    }
    std::cout << "\n";
}
bob 
bob hey 
bob hey joe 
bob hey joe doe
std::string myCompleteString;
vector<std::string>::iterator it;
for(it=myVec.begin(); it!=myVec.end(); ++it)
        myCompleteString  += *it +  " ";

cout << myCompleteString;
 std::vector<std::string> s { "bob", "hey", "joe", "doe" };
 std::vector<std::string> d;

 for (auto i = std::begin(s); i != std::end(s); ++i) {
     d.push_back(boost::algorithm::join(
         boost::make_iterator_range(std::begin(s), i + 1), 
         std::string(" ")
     ));
 }
bob
bob hey
bob hey joe
bob hey joe doe
 std::vector<std::string> s { "bob", "hey", "joe", "doe" };
 std::vector<std::string> d;

 std::string t;
 std::for_each(std::begin(s), std::end(s), [&](const std::string &i) {
     d.push_back(t += (i + " "));
 });