印刷在C ++数组?(Printing an array in C++?)

2019-06-21 13:40发布

有没有在C ++印刷阵列的方法吗?

我试图使该反转用户输入数组,然后打印出来的功能。 我试着用搜索引擎这个问题,它似乎像C ++不能打印阵列。 这不可能是真的可以吗?

Answer 1:

你不能只遍历元素? 像这样:

for (int i = numElements - 1; i >= 0; i--) 
    cout << array[i];

注:由于马克西姆Egorushkin指出,这可能溢出。 见下面他的评论为更好的解决方案。



Answer 2:

使用STL

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>

int main()
{
    std::vector<int>    userInput;

    // Read until end of input.
    // Hit control D  
    std::copy(std::istream_iterator<int>(std::cin),
              std::istream_iterator<int>(),
              std::back_inserter(userInput)
             );

    // Print in Normal order
    std::copy(userInput.begin(),
              userInput.end(),
              std::ostream_iterator<int>(std::cout,",")
             );
    std::cout << "\n";

    // Print in reverse order:
    std::copy(userInput.rbegin(),
              userInput.rend(),
              std::ostream_iterator<int>(std::cout,",")
             );
    std::cout << "\n";

    // Update for C++11
    // Range based for is now a good alternative.
    for(auto const& value: userInput)
    {
        std::cout << value << ",";
    }
    std::cout << "\n";
}


Answer 3:

我建议用鱼骨运营商?

for (auto x = std::end(a); x != std::begin(a); )
{
    std::cout <<*--x<< ' ';
}

(你能发现吗?)



Answer 4:

除了for循环基础的解决方案,你也可以使用ostream_iterator <> 。 下面是利用在(现已退休)SGI STL参考样本代码的示例:

#include <iostream>
#include <iterator>
#include <algorithm>

int main()
{
  short foo[] = { 1, 3, 5, 7 };

  using namespace std;
  copy(foo,
       foo + sizeof(foo) / sizeof(foo[0]),
       ostream_iterator<short>(cout, "\n"));
}

这会产生以下内容:

 ./a.out 
1
3
5
7

然而,这可能是矫枉过正满足您的需求。 一个for循环直大概是所有你需要,虽然litb的模板糖是相当不错的了。

编辑 :忘记要求“中反面印刷”。 下面是做这件事:

#include <iostream>
#include <iterator>
#include <algorithm>

int main()
{
  short foo[] = { 1, 3, 5, 7 };

  using namespace std;

  reverse_iterator<short *> begin(foo + sizeof(foo) / sizeof(foo[0]));
  reverse_iterator<short *> end(foo);

  copy(begin,
       end,
       ostream_iterator<short>(cout, "\n"));
}

和输出:

$ ./a.out 
7
5
3
1

编辑 :C ++ 14更新,使用状阵列迭代器功能简化了上面的代码段的std ::开始()和标准:: rbegin() :

#include <iostream>
#include <iterator>
#include <algorithm>

int main()
{
    short foo[] = { 1, 3, 5, 7 };

    // Generate array iterators using C++14 std::{r}begin()
    // and std::{r}end().

    // Forward
    std::copy(std::begin(foo),
              std::end(foo),
              std::ostream_iterator<short>(std::cout, "\n"));

    // Reverse
    std::copy(std::rbegin(foo),
              std::rend(foo),
              std::ostream_iterator<short>(std::cout, "\n"));
}


Answer 5:

但是也有一些没有申报,但在其他方面创造,特别是利用申报阵列和阵列new

int *p = new int[3];

用3个元素数组是动态创建的(和3可能在运行时被计算,太),和指向它的指针,其具有从其类型擦除的尺寸被赋值于p 。 你不能得到规模再打印该数组。 只接收指向它的指针的函数可以因此不打印数组。

印宣布阵列很容易。 您可以使用sizeof得到他们的大小和尺寸转嫁给包括一个指向数组元素的功能。 但你也可以创建一个接受数组,并从其声明的类型推断出它的大小的模板:

template<typename Type, int Size>
void print(Type const(& array)[Size]) {
  for(int i=0; i<Size; i++)
    std::cout << array[i] << std::endl;
}

这里的问题是,它不会接受指针(显然)。 最简单的解决方案,我认为,是使用std::vector 。 这是一个动态的,可调整大小的“阵列”(你会期望从一个真实的语义),其中有一个size成员函数:

void print(std::vector<int> const &v) {
  std::vector<int>::size_type i;
  for(i = 0; i<v.size(); i++)
    std::cout << v[i] << std::endl;
}

你可以,当然,也使这个模板接受其他类型的载体。



Answer 6:

大多数文库的在C ++中常用的不能打印的阵列,本身。 你会通过它必须手动循环并打印出每个值。

打印阵列和倾倒许多不同类型的对象是高级语言的特点。



Answer 7:

必然是! 您可以通过数组必须循环和单独打印出的每个项目。



Answer 8:

C ++可以打印任何你想要的,如果你的程序是这样做的。 你必须要经过自己的数组打印每个元素。



Answer 9:

这可能有助于//打印的数组

for (int i = 0; i < n; i++)
{cout << numbers[i];}

n是阵列的尺寸



Answer 10:

我的答案很简单:

#include <iostream>
using namespace std;

int main()
{
    int data[]{ 1, 2, 7 };
    for (int i = sizeof(data) / sizeof(data[0])-1; i >= 0; i--) {
        cout << data[i];
    }

    return 0;
}


Answer 11:

或者您可以使用此: https://github.com/gileli121/VectorEx

你可以很容易地显示与DisplayVector_1d阵列()。 它发展下视觉工作室2015吨工作只能在Windows(窗口上测试7 64位)。

你在找什么在这个库是DisplayVector_1d。 一世

它将显示在列表视图GUI阵列。 这就像在AutoIt中的_ArrayDisplay功能。

下面是一个例子如何使用此:

// includes.functions
#include <windows.h>

#include "VectorEx\VectorEx.h"
#include "VectorEx\VectorDisplay.h"
using namespace vectorex;
using namespace vectordisplay;


/*
    This example shows how to use display std::vector array datatype
    with vectordisplay::DisplayVector_1d
*/


int main()
{
    std::vector<std::string> stringVector;

    stringVector.push_back("Bob");
    stringVector.push_back("Fob");
    stringVector.push_back("Rob");
    stringVector.push_back("Nob");

    DisplayVector_1d(&stringVector);

    return 0;
}

请注意,我刚开始在这个项目上。 欢迎您来提高代码并修复错误



文章来源: Printing an array in C++?