首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用模板漂亮地打印嵌套数组

问使用模板漂亮地打印嵌套数组
EN

Stack Overflow用户
提问于 2015-06-30 07:22:01
回答 1查看 494关注 0票数 2

我有以下代码用于漂亮打印数组-:

代码语言:javascript
复制
// Print an array
// Does not work on nested arrays !
template<typename T1, size_t arrSize>
void printArray( T1 const( & arr )[arrSize], std::ostream& out = std::cout )
{
    out << "[";
    if ( arrSize )
    {
        for ( size_t it = 0; it != arrSize - 1; ++it )
        {
            out << arr[it] << ", ";
        }
        // Print the last element separately to avoid the extra characters following it.
        out << arr[arrSize - 1];
    }
    out << "]";
}

int arr[5][5];

int main()
{
    printArray( arr[0] );
    printArray( arr );
}

输出-:

0,0,0,0

虽然它在一维数组中正确工作,但是对于多维数组,函数打印数组的indivisual地址而不是它们的内容。

有使用单个函数调用打印通用多维数组的方法吗?

我使用GCC 4.9.2和-std=c++14标志。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-30 07:33:38

必须有一个数组函数,一个用于单个元素的函数:

代码语言:javascript
复制
// Print a single element (use in array version)
template<typename T>
void printArray(T const &e, std::ostream& out = std::cout )
{
    out << e;
}

// Print an (nested) array
template<typename T1, size_t arrSize>
void printArray(T1 const(& arr)[arrSize], std::ostream& out = std::cout )
{
    out << "[";
    const char* sep = "";
    for (const auto& e : arr)
    {
        out << sep;
        printArray(e, out);
        sep = ", ";
    }
    out << "]";
}

现场演示

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31132003

复制
相关文章

相似问题

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