首页 > 编程语言 >C++/CLI 托管C++的数组介绍【4】

C++/CLI 托管C++的数组介绍【4】

时间:2023-04-05 22:34:18浏览次数:49  
标签:托管 CLI 元素 C++ 数组 array



Git 源码地址

 

C++/CLI 托管C++的托管与非托管字符串的相互转换【1】

C++/CLI 托管C++的数据类型介绍【2】

C++/CLI 托管C++的基本数据类型及函数【3】

C++/CLI 托管C++的数组介绍【4】

C++/CLI 托管C++之字符串封装【5】

C++/CLI 托管C++之enum枚举封装【6】

C++/CLI 托管C++之类、属性封装【7】

C++/CLI 托管C++之结构体封装【8】

C++/CLI 托管C++之结构体封装(内存对齐#pragma pack)【9】

C++/CLI 托管C++之联合体union封装【10】

C++/CLI 托管C++之导出注释【11】

C++/CLI signing snk文件强命名


托管数组实际是System::Array 类型的对象,因此在 C++/CLI 程序中创建的托管数组能使用该类提供的各种方法和属性。

[1] 定义

 [qualifiers] [cli::]array<[qualifiers]type[,dimension]> ^var;

qualifiers 

存储方式说明(可选项)。可选择的存储方式包括:mutable, volatile,const,externstatc

array

托管数组定义的关键字,该关键字是定义在cli 名 域中的。托管程序项目中 using namespace cli; 是隐含的,所以 array 的名域说明cli:: 可省略

type 

托管数组元素的类型名。可选择的类型包括类型的句柄 ^ 名,类型名或本地指针名(例如值类型的 *指针名)。

dimension

托管数组的维数。缺省维数为1,最大维数为 32。

var  

托管数组名。

 

例如:

array<String^> ^     strArray1;    //一维 String^ 托管数组

array<double, 2> ^   doubleArray;  //二维 double 托管数组


[2] 创建

var= gcnew [cli::]array<[qualifiers]type[, dimension]>(val[, val…]);

gcnew 托管对象创建运算符。

val      托管数组指定维的尺寸

 

例如:

strArray1        = gcnew array<String^>(50);

doubleArray   = gcnew array<double, 2>(10, 10);

托管数组的创建也可以使用类System::Array提供创建托管数组实例的方法 CreateInstance 来实现,例如: array<int> ^intArray =Array::CreateInstance( int, 100 );

 

[3] 初始化

array<String^, 2>strArray =gcnew array<String^, 2>{

       { L“John”, L“male”, L“New York”},

       { L“Merry”, L“female”, L“Washington”}};

 

[3] 访问

对托管数组的访问可以通过下标算符,或用类 System::Array GetValueSetValue 方法

 

int value         = intArray[5];

String ^str       = strArray[2, 0];

String ^str       = strArray->GetValue( 2, 0 );

strArray->SetValue(L”Henrry”, 2, 0 );

 

[3] 排序(排序方法只能用于一维数组)

System::Array静态方法 Sort定义多种版本,以便满足对数组的多种排序需要,例如,对全部内建数值元素按缺省比较算法(数值升序)排序、对部分内建数值元素按缺省比较算法(数值升序)排序、对全部内建数值元素按降序算法排序、对全部自定义元素按自定义比较算法排序等

 

例如:

intArray 的全部元素按升序算法排序的语句:

Array::Sort( intArray );

 

intArray 中下标 1 到 5 的元素按升序算法排序的语句:

Array::Sort( intArray, 1, 5);

 

[4]查找(查找方法只能用于一维数组)

System::Array提供了静态方法 BinarySearch 的多种版本,以便满足对数组的多种查询需要,例如在全部内建数值元素中查询指定元素、在部分内建数值元素中查询指定元素、在全部自定义类型元素中按自定义算法查询指定元素。

 

例如:

intArray 的全部元素中查询指定元素的语句:

int pos = Array::BinarySearch( intArray, (Object^)25 );

如果被查询元素存在,则返回该元素在数组中的下标位置,否则返回 -1。

标签:托管,CLI,元素,C++,数组,array
From: https://blog.51cto.com/u_13675550/6171821

相关文章

  • C++逆向分析——this指针
    this指针概述C++是对C的拓展,C原有的语法C++都支持,并在此基础上拓展了一些语法:封装、继承、多态、模板等等。C++拓展新的语法是为了让使用更加方便、高效,这样就需要编译器多做了很多事情,接下来我们就需要一一学习这些概念。封装之前我们学习过结构体这个概念,那么结构体可以......
  • c++ std::string_view
    std::string_view系C++17标准发布后新增的内容。C++17中我们可以使用std::string_view来获取一个字符串的视图,字符串视图并不真正的创建或者拷贝字符串,而只是拥有一个字符串的查看功能。std::string_view比std::string的性能要高很多,因为每个std::string都独自拥有一份字符串的拷......
  • c++ struct和class
    c++中对象通常用struct和class表示。在c语言中,struct用来创建结构体,结构体中只能包含基本数据成员。而在c++中struct能包含成员函数,能实现多态(继承)。c++中struct和class的功能十分类似,但是在面向对象的过程中class的使用较多,两者的区别如下:struct与class的主要区别在于默认......
  • C++函数库——全排列
    全排列,顾名思义,对一个无序数组或者有序数组写出其对应的所有组合,实则为从当前数组顺序开始,排列出所有比当前序列大(默认)或者小的所有组合,所以如果初始为无序数组,则得到的结果并非所有组合1.next_permutation,获取下一个排列结果,及获取比当前序列小的下一个序列1#include<iost......
  • c++ std::variant
    std::variant是c++17引入的一个类型,其作用类似于C语言中的Union,但是比Union的功能强大的多。C语言中一个联合体Union可以储存多种类型数据,但缺点有很多。比如:1没有可用的方法来判断Union中真实储存的类型,获取值时也是内存拷贝的结果,可能会存在问题。这就只能靠程序员人脑保证......
  • 2.Visual studio的使用和C++的基础
    visualstudio的基础介绍C++入门编程C++关键字、标识符C++基本数据类型变量的定义visualstudio的基础介绍解决方案资源管理器 也可以在”视图”中找到”解决方案资源管理器” “.h”:头文件;“.cpp”:源文件添加新建项,选择C++语言  运行程序,或"ctrl+F5“ ......
  • C++中的左值和右值
    左值与右值左值和右值有如下3个规则:左值和右值都是表达式。左值是对象定位器,理论上左值指示指示一个对象。右值是一个临时值,其他位置无法访问这个值,通常情况下在语句执行完成后右值就被丢弃。http://c.biancheng.net/view/281.html左值:可以进行取地址的称为左值。右值:不......
  • C++复习-第一天
    C++支持完全面向对象的程序设计,包括面向对象开发的四大特性:封装;抽象;继承;多态。C++封装 C++抽象 C++继承 C++多态多态的实现方式分为三块:重载,重写,重定义。1.重载是指在同一作用域下,具有相同函数名称不同的参数类型,或不同的参数个数,或不同的返回类型。2.重写是指在......
  • C++库封装JNI接口——实现java调用c++
    1.JNI原理概述通常为了更加灵活高效地实现计算逻辑,我们一般使用C/C++实现,编译为动态库,并为其设置C接口和C++接口。用C++实现的一个库其实是一个或多个类的简单编译链接产物。然后暴露其实现类构造方法和纯虚接口类。这样就可以通过多态调用到库内部的实现类及其成员方法。进一步......
  • 关于我用ai做了一点c++开发这件事
    简介C++一直不是我的主力编程语言,何况众所周知C++学习曲线之陡峭,尽管如此我还是动了挑战一下用ai写一下c++程序的念头,事实证明ai非常高效的帮助我完成了我的目标,在大概7个小时的工作时间里帮助我写完了一个简单的汇编器,我目前主要使用newbing作为ai助手,我们的完整QA如下:QA过程......