首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::size()在C++ 17中不可用

在C++ 17中,std::size()函数不可用。std::size()是一个C++标准库函数,用于获取数组或容器的大小。然而,在C++ 17之前的标准中,std::size()函数并不存在。

在C++ 17之前,获取数组的大小可以使用sizeof操作符,例如sizeof(arr)/sizeof(arr[0]),其中arr是一个数组。对于容器,可以使用成员函数size()来获取其大小。

然而,在C++ 17中引入了一个新的特性,即std::size()函数。它是一个模板函数,用于获取数组或容器的大小。使用std::size()函数可以更加简洁和统一地获取大小,无论是数组还是容器。

以下是一个示例代码,展示了如何使用std::size()函数获取数组和容器的大小:

代码语言:txt
复制
#include <iostream>
#include <array>
#include <vector>

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    std::array<int, 5> arr2 = {6, 7, 8, 9, 10};
    std::vector<int> vec = {11, 12, 13, 14, 15};

    std::cout << "Size of arr: " << std::size(arr) << std::endl;
    std::cout << "Size of arr2: " << std::size(arr2) << std::endl;
    std::cout << "Size of vec: " << std::size(vec) << std::endl;

    return 0;
}

输出结果为:

代码语言:txt
复制
Size of arr: 5
Size of arr2: 5
Size of vec: 5

在上述示例中,我们使用std::size()函数分别获取了数组arr、std::array容器arr2和std::vector容器vec的大小,并将结果打印输出。

需要注意的是,std::size()函数只能用于C++ 17及以上的标准。如果你的编译环境不支持C++ 17,那么你仍然需要使用之前的方法来获取数组和容器的大小。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 云服务器(ECS):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版(CDB):https://cloud.tencent.com/product/cdb
  • 云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 物联网通信(IoT Hub):https://cloud.tencent.com/product/iothub
  • 移动推送(信鸽):https://cloud.tencent.com/product/tpns
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/virtual-universe
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • C++核心准则ES.56​:只需要将一个对象显式移动到另外的作用域时使用std::move​

    ES.56: Write std::move() only when you need to explicitly move an object to another scope ES.56:只需要将一个对象显式移动到另外的作用域时使用...显式移动一个对象到另外的作用域时,显式移动是有必要的。...通常情况下,std::move()作为为&&参数提供实参。而且移动之后,应该认为对象已经被移走(参见C.64)并且赋予新值之前不要获取对象的状态。...Use std::forward instead. 标记对转交引用类型调用std::move的情况(T&&,这里T是模板参数)。...Use std::move instead. 标记std::forward用于右值引用的情况(X&&,这里X是具体类型),转而使用std::move。

    94320

    C++打怪 之 vector

    简介 ❝Vector类 是 java 中可以实现自动增长的对象数组,vectorC++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。...; 在用到std变量时,必须对std的name成员分配空间,否则会出现野指针问题,在运行时导致机器宕机。...---- 「优化2:C++ vector」 struct STUDENT { char years; long id; vector name; }; 用到std变量时...基本用法 C++ 中的vector实现实用的接口供开发者选择: //头文件 #include using namespace std; /* 构造方法 */ vector标识符...结构体有vector成员,不可用memset对此结构体进行清零,否则会导致内存泄漏。 按我的理解,C++中的「vector」 与 C中的 「指针 + malloc」 类似。

    1.3K20

    C++惯用法之消除垃圾收集器-资源获取即初始化方法(RAII)

    C++惯用法之消除垃圾收集器-资源获取即初始化方法(RAII) 0.导语 C语言中,有三种类型的内存分配:静态、自动和动态。...意味着上面的例子c++中更简洁: int main() { std::string str = std::string ("toptal"); std::cout << "string object...但是,该示例的目的是说明为什么人们80年代末和90年代初发明了一大堆垃圾收集的语言,而在那个时候C ++ move语义不可用。 对于数据量比较大的文件,这可能会变得昂贵。...C++中,指向堆的指针不再需要后必须手动删除;否则,一旦最后一个指针超出范围,该内存将变得不可用,并且直到进程结束时操作系统对其进行管理后才会恢复。.../c++ makefile g++ -o c++ c++.cpp File makefile contains 38 lines. real 0m0.016s user 0m0.000s sys

    89020

    C++17中的shared_mutex与C++14的shared_timed_mutex

    当在一个频繁读取共享数据,但只偶尔涉及写操作的场景时,我们希望存在一种同一时刻可以允许多个线程进行读的操作,需要写的时候再进行所有权的独占性的互斥量,于是C++提供了shared_timed_mutex...2014 年的 Issaquah ISO C++ 会议上,shared_mutex 根据 N3891 提案被重命名为 shared_timed_mutex,并为不定时shared_mutex留出空间,而且不带定时的...C++17又提供了shared_mutex。两者的基本功能和用法类似,shared_mutex只是shared_timed_mutex基础上删除了超时的功能。...try_lock_for 尝试锁定互斥,若互斥指定的时限时期中不可用则返回 公有成员函数 try_lock_until 尝试锁定互斥,若直至抵达指定时间点互斥不可用则返回 公有成员函数 unlock...,若互斥不可用则返回 公有成员函数 try_lock_shared_for 尝试为共享所有权锁定互斥,若互斥指定的时限时期中不可用则返回 公有成员函数 try_lock_shared_until 尝试为共享所有权锁定互斥

    1K20

    C++异常处理:提高代码健壮性和可维护性

    通过合理地处理异常,我们可以使程序面对错误和异常情况时更加稳定,并且能够更好地定位和解决问题。本文将介绍C++中的异常处理机制,并分享一些异常处理的最佳实践。1....异常处理机制C++中的异常处理机制允许我们程序执行过程中捕获并处理异常。当异常被抛出时,程序的控制流将会从当前的执行路径转到最近的异常处理代码块,这有助于我们异常发生时采取适当的措施。...异常处理的最佳实践使用C++异常处理时,遵循以下最佳实践能够提高代码的健壮性和可维护性:选择合适的异常类型选择恰当的异常类型是异常处理的关键。...() << std::endl; // 处理图书不可用的情况 } catch (const UserIneligibleException& e) { std::cerr...表示图书不可用的异常,UserIneligibleException 表示用户不符合借阅条件的异常。

    28610

    c++11 mutex互斥量

    C++ mutex 类是一个简单的同步结构,用于保护共享数据免受从多个线程同时访问,避免数据竞争,并提供线程间的同步支持。其头文件中定义。...其提供的方法主要有: 成员函数 作用 lock 锁定互斥,若互斥不可用则阻塞 。 try_lock 尝试锁定互斥,若互斥不可用则返回 。...try_lock_for 尝试锁定互斥,若互斥指定的时限时期中不可用则返回。 try_lock_until 尝试锁定互斥,若直至抵达指定时间点互斥不可用则返回 。 unlock 解锁互斥。...其提供的方法如下: 成员函数 作用 lock 锁定互斥,若互斥不可用则阻塞 。 try_lock 尝试锁定互斥,若互斥不可用则返回 。...try_lock_for 尝试锁定互斥,若互斥指定的时限时期中不可用则返回。 try_lock_until 尝试锁定互斥,若直至抵达指定时间点互斥不可用则返回 。 unlock 解锁互斥。

    22370
    领券