如何通过指针输入整数数组并打印出数组和数组的大小(C++)
How in input an array of integers by pointers and print out the array and the size of the array(C++)
#include<iostream>
using namespace std;
int main() {
int *p=new int [10];
}
创建数组后,我很困惑,想知道是否可以执行以下操作:
- 读取没有内置数组(如 vector(的整数数组。
- 打印出此数组。
- 有没有我们可以在 cpp 中使用的内置命令来获取数组的实际大小,这意味着我们不必使用 sizeof(*p(/size(p[0](。
您认为在我们仍然使用数组指针的情况下,完成此任务的最简单方法是什么。
谢谢你帮助我!
我认为你可以使用std::for_each。与c ++ lambda函数一起,它是一个非常全面的工具:
for_each(p, p+10, []->(int element){ cout << element; })
sry,我没有编译上面的代码,所以它可能包含错误。但我希望模式是明确的。
如果你的编译器不支持lambdas,你可以使用函子或函数指针(只需谷歌搜索它(。我真的很喜欢这种方法,我也不喜欢循环。
但是,当然,如上所述,内部for_each循环。
这不会创建数组,但它会为您提供指向单个整数的指针。
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()
的矢量的适当大小,并且矢量的意图使迭代(这也是循环(项目以打印它们变得容易。
您必须逐项手动打印数组...访问每个值,例如:
cout << "index 5:" << p[5] << endl;
我认为循环是一种要走的路。只有当数组只有几个项目,并且固定长度(如 3 到 5 个项目左右(并且迫切需要优化代码以提高速度时,我才会避免循环,但控制台输出无论如何都会很慢。但编译器通常支持循环展开优化。
@nio,但是伙计,我想我仍然有麻烦这样做。 例如,有什么方法可以让我以这种简单的方式输入带有空格的"1 2 3 4",然后它读取数组? 还是我必须用回车键来做?(现在,我不在乎我们是否使用循环或不再使用循环:P( – 康康
此代码将读取由空格和换行符组合分隔的 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;
}
1. 读取整数数组,而不使用循环或一些内置数组(如 vector(。
递归。使用循环可以完成的所有事情都可以递归完成。
2. 不使用循环打印出此数组。
递归也是。
3. 是否有任何内置命令可以在 cpp 中使用来获取数组的实际大小,这意味着我们不必使用 sizeof(*p(/size(p[0](。
不,当你在 c++ 中使用数组时,你需要自己记住数组的长度。 sizeof(*p)/size(p[0])
也帮不了你
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '