首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印3D矢量

打印3D矢量
EN

Stack Overflow用户
提问于 2013-06-13 12:16:30
回答 4查看 2.3K关注 0票数 1

我正在尝试打印3D矢量,但遇到了运算符不匹配的问题。这是我填充向量的方法

代码语言:javascript
复制
masterList.push_back(tokens)

我试过这段代码:

代码语言:javascript
复制
copy(masterList.begin(), masterList.end(), ostream_iterator<string>(cout, "\n"));

至于look:

代码语言:javascript
复制
for( vector<vector<vector<string>>>::const_iterator i = masterList.begin(); i != masterList.end(); ++i)
    cout<<*i<<' ';

最新的一个是cout不打印三维矢量元素的指针。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-13 13:35:27

您可以执行以下操作:

代码语言:javascript
复制
for( vector<vector<vector<string>>>::const_iterator i = masterList.begin(); i != masterList.end(); ++i)
{
   for( vector<vector<string>>::const_iterator j = i->begin(); j != i->end(); ++j)
   {
        for( <vector<string>::const_iterator k = j->begin(); k != j->end(); ++k)
        { 
                 cout<<*k<<' ';
        }
   }
}
票数 2
EN

Stack Overflow用户

发布于 2013-06-13 12:55:20

它只是不知道如何打印*i元素(类型为vector<vector<string>>)。您还需要两个内部循环来打印每个string元素。

票数 4
EN

Stack Overflow用户

发布于 2013-06-13 14:53:40

使用助推器精神业力:

代码语言:javascript
复制
std::cout << format_delimited(auto_, ' ', v) << "\n";

打印

代码语言:javascript
复制
a0 a1 a2 a1 a2 a3 a2 a3 a4 a3 a4 a5 b0 b1 b2 b1 b2 b3 b2 b3 b4 b3 b4 b5

代码语言:javascript
复制
std::cout << format(auto_ % ',' % ' ' % eol , v) << "\n";

打印

代码语言:javascript
复制
a0,a1,a2 a1,a2,a3
a2,a3,a4 a3,a4,a5
b0,b1,b2 b1,b2,b3
b2,b3,b4 b3,b4,b5

代码语言:javascript
复制
std::cout << format_delimited( ("{\n" << ("\t{" << *auto_ << '}') % eol << "\n}\n") % eol, ' ', v) << "\n";

打印

代码语言:javascript
复制
{
    { a0 a1 a2 } 
    { a1 a2 a3 } 
}

 {
    { a2 a3 a4 } 
    { a3 a4 a5 } 
}

 {
    { b0 b1 b2 } 
    { b1 b2 b3 } 
}

 {
    { b2 b3 b4 } 
    { b3 b4 b5 } 
}

或者,您可以使用老式的基于范围的方法:

代码语言:javascript
复制
for (auto& d1 : v) {
    for (auto& d2 : d1) {
        for (auto& d3: d2)
            std::cout << d3 << " ";
        std::cout << "\n";
    }
    std::cout << "\n";
}

完整演示:

代码语言:javascript
复制
#include <vector>
#include <string>
#include <iostream>
#include <boost/spirit/include/karma.hpp>

namespace karma = boost::spirit::karma;

int main()
{
    const std::vector<std::vector<std::vector<std::string>>> v { { 
                { "a0", "a1", "a2" },
                { "a1", "a2", "a3" },
            }, {
                { "a2", "a3", "a4" },
                { "a3", "a4", "a5" },
            },
            {
                { "b0", "b1", "b2" },
                { "b1", "b2", "b3" },
            },
            {
                { "b2", "b3", "b4" },
                { "b3", "b4", "b5" },
     } };

    for (auto& d1 : v) {
        for (auto& d2 : d1) {
            for (auto& d3: d2)
                std::cout << d3 << " ";
            std::cout << "\n";
        }
        std::cout << "\n";
    }

    using namespace boost::spirit::karma;
    std::cout << format_delimited(auto_, ' ', v) << "\n";
    std::cout << format(auto_ % ',' % ' ' % eol , v) << "\n";
    std::cout << format_delimited( ("{" << *auto_ << "}"), ' ', v) << "\n";
    std::cout << format_delimited( ("{\n" << ("\t{" << *auto_ << '}') % eol << "\n}\n") % eol, ' ', v) << "\n";
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17079146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档