C++/C 数组的遍历

本文介绍了C++中数组的声明、遍历方法,包括int、double和string类型的数组。强调了数组声明时[]内必须为常量,以及遍历时使用for(auto:)和for()循环的注意事项。特别指出,数组访问不支持负数索引。
摘要由CSDN通过智能技术生成

虽然在c++中拥有vector这一神器,使得很多数组问题都可以转化为向量去解决,然而,一些问题还是需要依赖传统c语言中的数组。
这里的数组不止包括存数的,还有存储字符串的。

1、数组声明
int array1[5] = {1,2,3,4,5};
double array2[5] = {1.2,2.1,3.3,4.3,5.0};
string array3[5] = {"asd", "asdfa", "rwqeff", "qwfv", "qoiepjooem"};

注意声明的过程中,[]中必须是常量,不能是变量,这一点可能有时候会很蛋疼。

2、数组的遍历

1)for auto: 循环

for (auto eve : array) {
		cout << eve << endl;
	}

无论array是什么类型的都可以遍历。
2)for() 循环
传统的for()循环,需要数组的大小尺寸作为访问的上界,推荐使用sizeof()函数。

	for (int i = 0; i < sizeof(array2) / sizeof(1.2); i++)
		cout << array2[i] << endl;

但是需要慎用,尤其是string数组,但是string数组依然可以用这种方法进行遍历。

	for (int i = 0; i <sizeof(array3)/sizeof(string("temp")) ; i++)
	{
		cout << array3[i] << endl;
	}

需要注意的是此处的分母sizeof(string(“temp”))里必须要加string(),如果只是写"temp"是不行的。
3)注意
数组的访问无法进行负数切片,即array[-1]。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用指针来实现数组和链表之间的转换。具体来说,可以定义一个指向链表节点的指针,然后遍历数组中的元素,将每个元素插入到链表中。以下是一个示例代码: ```c #include <stdio.h> #include <stdlib.h> struct ListNode { int val; struct ListNode *next; }; struct ListNode* arrayToList(int* nums, int size) { struct ListNode* head = NULL; struct ListNode* tail = NULL; for (int i = 0; i < size; i++) { struct ListNode* node = (struct ListNode*)malloc(sizeof(struct ListNode)); node->val = nums[i]; node->next = NULL; if (head == NULL) { head = node; tail = node; } else { tail->next = node; tail = node; } } return head; } void printList(struct ListNode* head) { while (head != NULL) { printf("%d ", head->val); head = head->next; } printf("\n"); } int main() { int nums[] = {1, 2, 3, 4, 5}; int size = sizeof(nums) / sizeof(nums[0]); struct ListNode* head = arrayToList(nums, size); printList(head); return 0; } ``` 在上面的代码中,我们定义了一个结构体 `ListNode`,表示链表节点。然后定义了一个函数 `arrayToList`,用于将数组转换为链表。在函数中,我们遍历数组中的每个元素,创建一个新的节点,并将其插入到链表中。最后返回链表的头节点。我们还定义了一个函数 `printList`,用于打印链表中的所有元素。在 `main` 函数中,我们调用 `arrayToList` 函数将数组转换为链表,并调用 `printList` 函数打印链表中的所有元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值