#include<iostream>
using namespace std;
int main() {
int *p=new int [10];
}
创建数组后,我很困惑,想知道是否可以执行以下操作:
在我们仍然使用数组指针的情况下,您认为执行此任务的最简单方法是什么?
感谢您帮助我!
答案 0 :(得分:2)
我认为你可以使用std :: for_each。与c ++ lambda函数一起使用它是一个非常全面的工具:
for_each(p, p+10, []->(int element){ cout << element; })
如果您的编译器不支持lambdas,您可以使用仿函数或函数指针(只需google)。我真的很喜欢这种方法,我也不喜欢循环。
但是,当然如上所述,for_each循环内部。
答案 1 :(得分:1)
这不会创建数组,但它会为您提供指向单个整数的指针。
int *p=new int;
将此更改为:
const unsigned size = 10;
int * p = new int[size]; /*dont forget to call delete[] on p when you are ready.*/
现在p指向10个整数,你知道尺寸,因为你把尺寸设置为10个。
当然可以在没有循环的情况下打印p的值
/*Assuming you initialize the values.*/
cout << p[0];
cout << p[1];
/*etc*/
cout << p[9];
那就是说我认为解决问题的最简单方法是使用vector<int>
(但这并不能满足你的第一点)。你将始终使用vector<TYPE>::size()
获得适当大小的向量,并且向量的内容可以很容易地在项目上进行迭代(也是循环)以打印它们。
答案 2 :(得分:1)
您必须逐个手动打印数组...访问每个值,例如:
cout << "index 5:" << p[5] << endl;
我认为循环是一种方法。我会避免循环,只有当数组有少量项目,固定长度,如3至5项左右,并急需优化代码的速度,但不是控制台输出,无论如何将是慢。但编译器通常支持循环展开最优化。
@nio,但伙计,我想我仍然有这样做的麻烦。例如,有没有什么方法可以用这个简单的方式输入“1 2 3 4”空间然后它读取数组?或者我必须用enter进行? (现在,我不在乎我们是否再使用循环:P) - Cancan
此代码将读取由空格和换行符组合分隔的4个项目:
int *p=new int[10];
int i;
for(i=0;i<4;i++)
{
cin >> p[i];
}
for(i=0;i<4;i++)
{
cout << "index " << i << " :" << p[i] << endl;
}
答案 3 :(得分:0)
1。读取一个整数数组而不使用循环,也不读取一些内置数组,如vector。
递归。可以使用循环完成的所有操作都可以递归完成。
2。打印出这个数组而不使用循环。
递归也是。
3。是否有任何内置命令可以在cpp中使用以获取数组的实际大小,这意味着我们不必使用sizeof(* p)/ size(p [0])。 <登记/>
不,当你在c ++中使用数组时,你需要自己记住数组的长度。 sizeof(*p)/size(p[0])
对你也无济于事