用c ++编写一个完整的数组

时间:2015-10-30 15:05:23

标签: c++ c++11 visual-c++

我对c ++很新,有没有一种方法在c ++中我们可以通过for循环迭代除了整个静态数组?

line([Point(LineIndex(k1,1), 1), Point(LineIndex(k1,2), 1)], ...
     [Point(LineIndex(k1,1), 2), Point(LineIndex(k1,2), 2)], ...
     [Point(LineIndex(k1,1), 3), Point(LineIndex(k1,2), 3)]);

我尝试过这个,但这是打印数组中第一个元素的地址。

7 个答案:

答案 0 :(得分:7)

以下没有使用循环:

std::copy(std::begin(arra),
          std::end(arra),
          std::ostream_iterator<int>(std::cout, "\n"));

但循环似乎更容易读/写/理解:

for (const auto& e : arra) {
    std::cout << e << std::endl;
}

答案 1 :(得分:1)

你需要循环遍历数组

int arra[10] = {1,2,3,4};
for (int i = 0; i<sizeof(arra)/sizeof(arra[0]); ++i)
{
    std::cout << arra[i] << std::endl;
}

或使用

std::copy(std::begin(arra), std::end(arra), std::ostream_iterator<int>(std::cout,"\n"));

答案 2 :(得分:1)

您将如何访问数组的每个元素以显示内容。这可以是长形式或使用循环。幸运的是,我们可以使用std::copy来显示循环并显示数组。

int arr[] = {1,2,3,4,5};
std::copy(std::begin(arr), std::end(arr), std::ostream_iterator<int>(std::cout, " "));

Live Example

答案 3 :(得分:0)

正如您要求在没有数组的情况下执行此操作时,您可以轻松地执行此操作:

std::copy(arra, arra + 10,
            std::ostream_iterator<int>(cout, "\n"));

如果你想编写好的代码,可以使用std :: array,然后只需编写arra.begin()arra.end()

答案 4 :(得分:-1)

基本上有两种方式。第一个是某个地方的循环。循环可以是显式的 - 在您的代码中 - 或者它可以通过库隐式。库循环示例:

std::for_each(cbegin(arra), cend(arra), [](int i) {std::cout << "i ";});

打印数组的第二种方法是使用递归。以下是代码示例:

void print_element(const int* head, const int* tail) {
    if (head == tail)
       return;

    std::cout << *head << " ";
    print_element(head + 1, tail);
}

....
print_element(arr, arr + sizeof(arr) / sizeof(*arr));

关于递归解决方案的几句话。根据您的优化,它可以产生不同的结果。递归的性能大致相当于AMD64 ABI在任何优化级别上的循环性能。原因是函数的参数通过寄存器传递(不推入堆栈),帧指针不用于任何优化。考虑到这一点,与循环相比,唯一的CALL / RET(推/弹RIP)将减慢执行速度,但这种降级是不可测量的。然而,真正的问题是可以在给定系统上进行有限数量的递归调用(通常大约数千个),因此打印1000000个元素的数组肯定会使应用程序崩溃。

随着更高级别的优化(涉及尾调用优化),递归调用将转换为普通jmps,性能将与循环中的性能完全相同。它还将消除最大递归级别的问题 - 这样就可以打印任何大小的数组。

答案 5 :(得分:-1)

它是打印地址,因为您指向的是数组,而不是数组的元素。 试试这个

void printArray(int arr[], int n) 

/* n is size here*/

{ 
    for (int i = 0; i < n; i++) 

        cout << arr[i] << " "; 
    } 

答案 6 :(得分:-1)

#include<iostream>        
using namespace std;

int main(){     int i;

int myarr[5]={9,84,7,55,6};
for(i=0;i<5;i++){

    cout<<myarr[i]<<endl;
}

}