如何打印出向量的内容?

如何打印出向量的内容?

我想在C+中打印一个向量的内容,下面是我的如下内容:

#include <iostream>#include <fstream>#include <string>#include <cmath>#include <vector>
#include <sstream>#include <cstdio>using namespace std;int main(){
    ifstream file("maze.txt");
    if (file) {
        vector<char> vec(istreambuf_iterator<char>(file), (istreambuf_iterator<char>()));
        vector<char> path;
        int x = 17;
        char entrance = vec.at(16);
        char firstsquare = vec.at(x);
        if (entrance == 'S') { 
            path.push_back(entrance); 
        }
        for (x = 17; isalpha(firstsquare); x++) {
            path.push_back(firstsquare);
        }
        for (int i = 0; i < path.size(); i++) {
            cout << path[i] << " ";
        }
        cout << endl;
        return 0;
    }}

如何将向量的内容打印到屏幕上?


慕桂英546537
浏览 863回答 3
3回答

莫回无

要做到这一点,一个更简单的方法是使用标准复制算法:#include&nbsp;<iostream>#include&nbsp;<algorithm>&nbsp;//&nbsp;for&nbsp;copy#include&nbsp;<iterator>&nbsp;//&nbsp;for&nbsp;ostream_iterator#include&nbsp;<vector>int&nbsp;main()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Set&nbsp;up&nbsp;vector&nbsp;to&nbsp;hold&nbsp;chars&nbsp;a-z&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;std::vector<char>&nbsp;path; &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;ch&nbsp;=&nbsp;'a';&nbsp;ch&nbsp;<=&nbsp;'z';&nbsp;++ch) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path.push_back(ch); &nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Print&nbsp;path&nbsp;vector&nbsp;to&nbsp;console&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;std::copy(path.begin(),&nbsp;path.end(),&nbsp;std::ostream_iterator<char>(std::cout,&nbsp;"&nbsp;")); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}ostream_iterator被称为迭代器适配器..对类型进行模板化,以便打印到流(在本例中,char).&nbsp;cout(也称为控制台输出)是我们要写入的流,以及空格字符(" ")是我们希望在存储在向量中的每个元素之间打印的内容。这个标准算法是强大的,许多其他算法也是如此。标准库给你的力量和灵活性使它如此伟大。想象一下:您可以用一代码行。您不必使用分隔符来处理特殊情况。你不需要担心循环。标准图书馆为你做这一切。

波斯汪

在C+11中,您现在可以使用基于范围的循环:for&nbsp;(auto&nbsp;const&&nbsp;c&nbsp;:&nbsp;path) &nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;<<&nbsp;c&nbsp;<<&nbsp;'&nbsp;';
打开App,查看更多内容
随时随地看视频慕课网APP