| 概述 | 组 | 树 | 图形 | 不推荐 | 索引 | 概念 |
| 环境中的数组 |
| 可扩展数组 |
| 数组作为句柄 |
| 数组索引 |
| 复制数组 |
| 编程提示:高效使用数组 |
对于 Concert Technology 中的大多数基本类(如 "IloIntVar或 "IloConstraint),也有一个相应的数组类,数组中的元素就是该基本类的实例。 例如,"IloConstraintArray实例的元素就是 "IloConstraint类的实例。
Concert 技术阵列具有可扩展性。 也就是说,你可以动态地向数组添加元素。 您可以通过数组类的成员函数 "add来添加元素。
您还可以通过数组的 "remove成员函数从数组中删除元素。
每当数组中添加或删除一个元素时,对该元素的引用就会发生变化。 例如
IloNumArrayx; IloNum *x1ptr= &(x[1]); x.add(1.3); **x1ptr不再有效!
与其他 Concert Technology 对象一样,数组通过两个类来实现:一个句柄类对应一个实现类。 句柄类对象包含一个数据成员(句柄指针),指向相应实现类的一个对象(实现对象)。 作为 Concert Technology 的用户,您将主要使用手柄。
CPLEX 遵循 C++ 编程惯例,从 0(零)开始枚举数组的索引。 例如,添加到模型中的 MIP 起点指数从 0(零)开始。 同样,与模型相关的过滤器的索引也从 0(零)开始。
许多句柄可能指向同一个执行对象。 这一原则适用于数组以及 Concert Technology 中的其他句柄类。 如果要为同一个实现对象创建多个句柄,应使用数组类的复制构造函数或赋值操作符。 例如
IloNumArrayarray(env); // 创建指向新植入的句柄
IloNumArray array1(array); // 创建指向同一 impl 的句柄
IloNumArray array2;// 创建一个空句柄
array2= array; // 将句柄array2的 impl 设置为 array 的 impl再举一个例子,下面几行将 "a1中的所有元素添加到 "a2中,实质上是复制数组。
IloNumArray a1; IloNumArray a2; a2.clear(); a2.add(a1);
如果您的应用程序只读取数组(也就是说,如果您的函数不修改数组中的元素),那么我们建议您将数组作为 "const参数传递给函数。 这种做法迫使 Concert Technology 访问索引操作符的 "const转换(即 "operator[]),这样速度更快。