std::vector::data() 函数的作用相对有限,类似于 string::c_str(),为特殊情况下直接访问或操作底层数组提供了机会,比如与已有库API进行交互。例如,若库函数定义如下:void Foo(const int* arr, int len)当你拥有一个 vector a,此时只能使用 Foo(a.data(), a.size()) 进行调用。简而言之...
data data函数主要是用来返回容器底层的数组,其函数原型如下: T*data();//C++11 前T*data()noexcept;//C++11 起, C++20 前constexprT*data()noexcept;//C++20 起constT*data()const;//C++11 前constT*data()constnoexcept;//C++11 起, C++20 前constexprconstT*data()constnoexcept;//C++20 起 data...
可以使用头文件 <algorithm> 里的方法 std::find, #include <algorithm> #include <vector> vector<i...
//library_function(struct A **array); library_function(vec.data()); 当然,如果我更改向量中的元素,那么data()返回的指针将无效,但这不是问题(我可以在更新向量时再次调用该函数)。 我很惊讶这可能是未定义的行为,因为我看不到任何地方提到data()是由空指针而不是随机垃圾来终止的。 该标准确实规定: cons...
std::vector<int> data = {1,2,3}; std::cout< operator[] operator[]与at功能相同,即用来访问指定的元素,但其与at不同的是:operator[]不进行边界的检查。其函数声明如下所示: referenceoperator[]( size_type pos );//C++20 前constexprreferenceoperator[]( size_type pos );//C++20 起const_refere...
返回指向作为元素存储工作的底层数组的指针。指针满足范围[data(); data() + size())始终是合法范围,即使容器为空(该情况下data()不可解引用)。 参数 (无) 返回值 指向底层元素存储的指针。对于非空容器,返回的指针与首元素地址比较相等。 复杂度
当然,如果我更改向量中的元素,则返回的指针data()将无效,但这不是这里的问题(我可以在更新向量时再次调用该函数)。 我只是担心这可能是未定义的行为,因为我看不到任何提到的data()由空指针而不是随机垃圾终止的地方。 标准确实说: const T* data() const noexcept; Returns pointer to the underlying array se...
void Foo(const int* arr, int len)你有一个vector<int> a,你就只能Foo(a.data(), a.size()...
//vector::data#include <iostream>#include<vector>intmain() { std::vector<int> myvector(5);int* p =myvector.data();*p =10;++p;*p =20; p[2] =100; std::cout<<"myvector contains:";for(unsigned i =0; i < myvector.size(); ++i) ...
std::vector::data std::vector::data T* data(); (since C++11) const T* data() const; (since C++11) 返回指向作为元素存储的基础数组的指针。指针就是这样的范围。[data(); data() + size())始终是有效范围,即使容器为空%28data()在这种情况下%29是不可取消的。 参数 %280%29 ...