for(char c:s),std::vector<int> numbers 和std::int numbers[],.size()和.sizeof()区别

在C++中当需要对某个容器或数组进行遍历时我们可以使用以下语句,c将会被赋值为s中的元素

复制代码
	for(char c:s):
	//s可以是任何满足条件的容器或数组
	
	for(int c:s):
	
	for(double c:s):
	
	for(float c:s):

在C++中我们来区分std::vector numbers = {1, 2, 3, 4, 5};和std::int numbers[] = {1, 2, 3, 4, 5};区别。

复制代码
#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};

    // 使用范围-based for循环遍历vector<int>
    for (int num : numbers) {
        std::cout << num << " ";
    }

    return 0;
}

#include <iostream>

int main() {
    int numbers[] = {1, 2, 3, 4, 5};

    // 使用范围-based for循环遍历数组
    for (int num : numbers) {
        std::cout << num << " ";
    }

    return 0;
}

区别:

动态大小 vs. 静态大小:

std::vector numbers = {1, 2, 3, 4, 5};:std::vector是一个动态大小的容器,可以在运行时动态添加或删除元素。

int numbers[] = {1, 2, 3, 4, 5};:这是一个静态大小的数组,一旦定义了大小,就无法在运行时更改数组的大小。
内存管理:

std::vector自动管理其内部存储,包括内存分配和释放。

数组int numbers[]需要手动管理其内存,没有自动内存管理功能。如果需要动态大小的数组,应该使用动态分配的数组或者std::vector。
传递方式:

std::vector是一个类对象,传递时会复制整个容器。对于大型容器,这可能会导致性能开销。

数组名numbers[]在大多数上下文中会被解释为指向数组的指针,因此传递时实际上传递的是指向数组首元素的指针。
边界检查:

std::vector会在运行时执行边界检查,可以使用at()方法来访问元素并进行边界检查。

数组没有内置的边界检查,如果访问超出数组边界的索引,可能会导致未定义的行为

在C++ 中:.size()和.sizeof()区别

.size():

在C++的标准库容器(如std::vector, std::array, std::string等)中,用于获取容器中元素的数量的方法是.size()。这是一个成员函数,返回容器中元素的数量。

例如,对于std::vector numbers;,你可以使用numbers.size()来获取该向量中的元素数量。
sizeof 操作符:

sizeof是C++中的一个操作符,用于返回其操作数的大小(以字节为单位)。sizeof是一个编译时运算符,用于返回编译时确定的对象或类型的大小。

例如,sizeof(int)将返回int类型的大小(通常是4个字节),而sizeof(numbers)将返回numbers数组的总大小(以字节为单位)。

相关推荐
Dxy12393102169 分钟前
Python在图片上画圆形:从入门到实战
开发语言·python
爱编码的小八嘎17 分钟前
C语言完美演绎8-4
c语言
桌面运维家28 分钟前
IDV云桌面vDisk机房部署方案模板特性解析
java·开发语言·devops
飞翔的SA32 分钟前
从6.75%到100%!大模型Function Calling终极方案:Harness工程如何驯服
开发语言·ai·llm·harness
耿雨飞1 小时前
Python 后端开发技术博客专栏 | 第 09 篇 GIL 深度解析与并发编程实战 -- 多线程、多进程、协程的选型
开发语言·python
Stark-C1 小时前
NAS音乐必备神器,全平台音乐收割机!极空间部署『Go Music DL』
开发语言·后端·golang
Ulyanov1 小时前
像素迷宫:路径规划算法的可视化与实战
大数据·开发语言·python·算法
枫叶丹41 小时前
【HarmonyOS 6.0】ArkWeb PDF预览回调功能详解:让PDF加载状态可控可感
开发语言·华为·pdf·harmonyos
小陈工2 小时前
数据库Operator开发实战:以PostgreSQL为例
开发语言·数据库·人工智能·python·安全·postgresql·开源
耿雨飞2 小时前
Python 后端开发技术博客专栏 | 第 07 篇 元类与类的创建过程 -- Python 最深层的魔法
开发语言·python