当前位置: 首页 > wzjs >正文

网站建立好了自己怎么做优化品牌网站建设只询大蝌蚪

网站建立好了自己怎么做优化,品牌网站建设只询大蝌蚪,网站建设用什么系统好,长沙有什么好吃的Open CASCADE (OCC) 是一个开源的 CAD/CAM/CAE 几何建模内核,它提供了多种容器类来存储和管理数据。下面我将详细介绍 Open CASCADE 中的主要容器类及其使用方法。 1. NCollection 容器 Open CASCADE 提供了一套名为 NCollection 的高效容器模板库,类似…

Open CASCADE (OCC) 是一个开源的 CAD/CAM/CAE 几何建模内核,它提供了多种容器类来存储和管理数据。下面我将详细介绍 Open CASCADE 中的主要容器类及其使用方法。

1. NCollection 容器

Open CASCADE 提供了一套名为 NCollection 的高效容器模板库,类似于 STL 但针对 CAD 应用进行了优化。

1.1 NCollection_Array1 - 一维数组

#include <NCollection_Array1.hxx>
#include <iostream>int main() {// 创建一个包含5个整数的数组,索引从1到5NCollection_Array1<int> arr(1, 5);// 填充数组for (int i = arr.Lower(); i <= arr.Upper(); i++) {arr(i) = i * 10;}// 访问和打印数组元素std::cout << "Array elements:" << std::endl;for (int i = arr.Lower(); i <= arr.Upper(); i++) {std::cout << "arr(" << i << ") = " << arr(i) << std::endl;}// 检查边界try {std::cout << "Attempting to access arr(0): ";std::cout << arr(0) << std::endl; // 这将抛出异常} catch (Standard_OutOfRange&) {std::cout << "Out of range exception caught!" << std::endl;}return 0;
}

1.2 NCollection_List - 双向链表

#include <NCollection_List.hxx>
#include <iostream>int main() {// 创建一个整数链表NCollection_List<int> list;// 添加元素list.Append(10);list.Append(20);list.Append(30);list.Prepend(5); // 在开头添加// 遍历链表std::cout << "List contents:" << std::endl;for (NCollection_List<int>::Iterator it(list); it.More(); it.Next()) {std::cout << it.Value() << std::endl;}// 检查是否包含某个值bool contains20 = list.Contains(20);std::cout << "List contains 20: " << (contains20 ? "true" : "false") << std::endl;// 删除元素list.Remove(20);// 再次遍历std::cout << "List after removing 20:" << std::endl;for (NCollection_List<int>::Iterator it(list); it.More(); it.Next()) {std::cout << it.Value() << std::endl;}return 0;
}

1.3 NCollection_Map - 哈希映射

#include <NCollection_Map.hxx>
#include <NCollection_DefaultHasher.hxx>
#include <iostream>int main() {// 创建一个整数到字符串的映射NCollection_Map<int, NCollection_DefaultHasher<int>> intMap;// 添加元素intMap.Add(1);intMap.Add(2);intMap.Add(3);// 检查元素是否存在std::cout << "Map contains 2: " << (intMap.Contains(2) ? "true" : "false") << std::endl;std::cout << "Map contains 5: " << (intMap.Contains(5) ? "true" : "false") << std::endl;// 遍历映射std::cout << "Map contents:" << std::endl;for (NCollection_Map<int, NCollection_DefaultHasher<int>>::Iterator it(intMap); it.More(); it.Next()) {std::cout << it.Key() << std::endl;}// 删除元素intMap.Remove(2);// 再次检查std::cout << "After removal, map contains 2: " << (intMap.Contains(2) ? "true" : "false") << std::endl;return 0;
}

1.4 NCollection_DataMap - 键值对映射

#include <NCollection_DataMap.hxx>
#include <TCollection_AsciiString.hxx>
#include <iostream>int main() {// 创建一个字符串到整数的映射NCollection_DataMap<TCollection_AsciiString, int> strToIntMap;// 添加元素strToIntMap.Bind("one", 1);strToIntMap.Bind("two", 2);strToIntMap.Bind("three", 3);// 访问元素if (strToIntMap.IsBound("two")) {std::cout << "Value for 'two': " << strToIntMap.Find("two") << std::endl;}// 遍历映射std::cout << "DataMap contents:" << std::endl;NCollection_DataMap<TCollection_AsciiString, int>::Iterator it(strToIntMap);for (; it.More(); it.Next()) {std::cout << it.Key() << " => " << it.Value() << std::endl;}// 更新值strToIntMap("two") = 22;// 检查更新std::cout << "Updated value for 'two': " << strToIntMap.Find("two") << std::endl;// 删除元素strToIntMap.UnBind("two");// 检查删除std::cout << "After removal, 'two' exists: " << (strToIntMap.IsBound("two") ? "true" : "false") << std::endl;return 0;
}

2. TCollection 容器

TCollection 是 Open CASCADE 提供的另一组容器类,主要用于字符串处理。

2.1 TColStd_Array1OfReal - 实数数组

#include <TColStd_Array1OfReal.hxx>
#include <iostream>int main() {// 创建一个实数数组,索引从0到4TColStd_Array1OfReal realArray(0, 4);// 填充数组for (int i = realArray.Lower(); i <= realArray.Upper(); i++) {realArray(i) = i * 1.5;}// 访问和打印数组元素std::cout << "Real array elements:" << std::endl;for (int i = realArray.Lower(); i <= realArray.Upper(); i++) {std::cout << "realArray(" << i << ") = " << realArray(i) << std::endl;}// 修改元素realArray(2) = 99.9;// 显示修改后的值std::cout << "Modified realArray(2) = " << realArray(2) << std::endl;return 0;
}

2.2 TColStd_SequenceOfReal - 实数序列

#include <TColStd_SequenceOfReal.hxx>
#include <iostream>int main() {// 创建一个实数序列TColStd_SequenceOfReal realSeq;// 添加元素realSeq.Append(1.1);realSeq.Append(2.2);realSeq.Append(3.3);// 在开头插入realSeq.Prepend(0.0);// 遍历序列std::cout << "Sequence contents:" << std::endl;for (int i = 1; i <= realSeq.Length(); i++) {std::cout << "realSeq(" << i << ") = " << realSeq.Value(i) << std::endl;}// 删除元素realSeq.Remove(2); // 删除第二个元素// 再次遍历std::cout << "Sequence after removal:" << std::endl;for (int i = 1; i <= realSeq.Length(); i++) {std::cout << "realSeq(" << i << ") = " << realSeq.Value(i) << std::endl;}return 0;
}

2.3 TColStd_ListOfInteger - 整数列表

#include <TColStd_ListOfInteger.hxx>
#include <iostream>int main() {// 创建一个整数列表TColStd_ListOfInteger intList;// 添加元素intList.Append(10);intList.Append(20);intList.Append(30);// 在开头插入intList.Prepend(5);// 遍历列表std::cout << "List contents:" << std::endl;TColStd_ListIteratorOfListOfInteger it(intList);for (; it.More(); it.Next()) {std::cout << it.Value() << std::endl;}// 查找元素Standard_Integer toFind = 20;if (intList.Contains(toFind)) {std::cout << "List contains " << toFind << std::endl;} else {std::cout << "List does not contain " << toFind << std::endl;}// 删除元素intList.Remove(toFind);// 再次检查std::cout << "After removal, list contains " << toFind << ": " << (intList.Contains(toFind) ? "true" : "false") << std::endl;return 0;
}

3. 几何容器

Open CASCADE 还提供了一些专门用于几何数据的容器。

3.1 TColgp_Array1OfPnt - 点数组

#include <TColgp_Array1OfPnt.hxx>
#include <gp_Pnt.hxx>
#include <iostream>int main() {// 创建一个包含3个点的数组TColgp_Array1OfPnt points(1, 3);// 填充点points.SetValue(1, gp_Pnt(0, 0, 0));points.SetValue(2, gp_Pnt(1, 0, 0));points.SetValue(3, gp_Pnt(1, 1, 0));// 访问和打印点std::cout << "Point array contents:" << std::endl;for (int i = points.Lower(); i <= points.Upper(); i++) {gp_Pnt p = points.Value(i);std::cout << "Point " << i << ": (" << p.X() << ", " << p.Y() << ", " << p.Z() << ")" << std::endl;}// 修改点points(2).SetY(2.0);// 显示修改后的点gp_Pnt modified = points.Value(2);std::cout << "Modified point 2: (" << modified.X() << ", " << modified.Y() << ", " << modified.Z() << ")" << std::endl;return 0;
}

3.2 TColGeom_Array1OfBSplineCurve - B样条曲线数组

#include <TColGeom_Array1OfBSplineCurve.hxx>
#include <Geom_BSplineCurve.hxx>
#include <TColgp_Array1OfPnt.hxx>
#include <TColStd_Array1OfReal.hxx>
#include <TColStd_Array1OfInteger.hxx>int main() {// 创建控制点TColgp_Array1OfPnt poles(1, 4);poles.SetValue(1, gp_Pnt(0, 0, 0));poles.SetValue(2, gp_Pnt(1, 1, 0));poles.SetValue(3, gp_Pnt(2, 1, 0));poles.SetValue(4, gp_Pnt(3, 0, 0));// 创建节点和重数TColStd_Array1OfReal knots(1, 2);knots.SetValue(1, 0.0);knots.SetValue(2, 1.0);TColStd_Array1OfInteger mults(1, 2);mults.SetValue(1, 4);mults.SetValue(2, 4);// 创建B样条曲线Handle(Geom_BSplineCurve) curve1 = new Geom_BSplineCurve(poles, knots, mults, 3);// 创建另一个曲线poles.SetValue(2, gp_Pnt(1, 2, 0));Handle(Geom_BSplineCurve) curve2 = new Geom_BSplineCurve(poles, knots, mults, 3);// 创建B样条曲线数组TColGeom_Array1OfBSplineCurve curves(1, 2);curves.SetValue(1, curve1);curves.SetValue(2, curve2);// 访问曲线Handle(Geom_BSplineCurve) firstCurve = curves.Value(1);gp_Pnt startPoint = firstCurve->Value(firstCurve->FirstParameter());gp_Pnt endPoint = firstCurve->Value(firstCurve->LastParameter());// 打印曲线信息std::cout << "First curve:" << std::endl;std::cout << "  Start point: (" << startPoint.X() << ", " << startPoint.Y() << ", " << startPoint.Z() << ")" << std::endl;std::cout << "  End point: (" << endPoint.X() << ", " << endPoint.Y() << ", " << endPoint.Z() << ")" << std::endl;return 0;
}

4. 高级容器操作

4.1 容器间的转换

#include <TColStd_ListOfInteger.hxx>
#include <TColStd_SequenceOfInteger.hxx>
#include <NCollection_List.hxx>
#include <iostream>int main() {// 创建一个NCollection列表NCollection_List<int> nList;nList.Append(1);nList.Append(2);nList.Append(3);// 转换为TColStd列表TColStd_ListOfInteger tList;for (NCollection_List<int>::Iterator it(nList); it.More(); it.Next()) {tList.Append(it.Value());}// 转换为序列TColStd_SequenceOfInteger seq;TColStd_ListIteratorOfListOfInteger it(tList);for (; it.More(); it.Next()) {seq.Append(it.Value());}// 打印序列内容std::cout << "Sequence converted from NCollection list:" << std::endl;for (int i = 1; i <= seq.Length(); i++) {std::cout << seq.Value(i) << " ";}std::cout << std::endl;return 0;
}

5. 性能考虑

Open CASCADE 容器与 STL 容器的选择:

  1. NCollection vs STL:

    • NCollection 针对 CAD 数据进行了优化
    • 内存管理更符合 Open CASCADE 的整体架构
    • 与 Open CASCADE 其他类集成更好
  2. 何时使用 STL:

    • 需要与标准 C++ 代码交互时
    • 需要 STL 特定算法时
    • 性能测试显示 STL 在特定场景下更优时

总结

Open CASCADE 提供了丰富的容器类,包括:

  1. NCollection 容器:通用模板容器,类似 STL 但针对 CAD 优化
  2. TCollection 容器:主要用于字符串和基本数据类型
  3. 几何专用容器:如 TColgp_Array1OfPnt 等,用于几何数据

选择容器时应考虑:

  • 数据类型和大小
  • 需要的操作(随机访问、插入、删除等)
  • 性能要求
  • 与其他 Open CASCADE 类的互操作性

以上代码示例展示了各种容器的创建、填充、访问、修改和遍历操作,涵盖了 Open CASCADE 容器的主要功能。


文章转载自:

http://2sJlju8p.ncLps.cn
http://L0rln9cu.ncLps.cn
http://RQFbXDiq.ncLps.cn
http://tfcEGsM2.ncLps.cn
http://y88B8SCI.ncLps.cn
http://PyFRJs6i.ncLps.cn
http://o0zcoG6a.ncLps.cn
http://Fl6LEjpG.ncLps.cn
http://UScd80DJ.ncLps.cn
http://ou2KZeAE.ncLps.cn
http://71vDmEcP.ncLps.cn
http://N9GWLMfz.ncLps.cn
http://VZ2EFIVk.ncLps.cn
http://jOBJE7Nu.ncLps.cn
http://xnEV6GGE.ncLps.cn
http://E5pLx0mY.ncLps.cn
http://y2zgg7Zc.ncLps.cn
http://PEJ0hm66.ncLps.cn
http://q9trEJLH.ncLps.cn
http://6P3T78hL.ncLps.cn
http://Q9035dYG.ncLps.cn
http://Ln2JDXis.ncLps.cn
http://I3jWNlkd.ncLps.cn
http://RhoJr4H2.ncLps.cn
http://sXLphOtk.ncLps.cn
http://543HrKON.ncLps.cn
http://W3NSB7TD.ncLps.cn
http://GObyTTzi.ncLps.cn
http://nq2DZuL8.ncLps.cn
http://uJ83u6TC.ncLps.cn
http://www.dtcms.com/wzjs/725763.html

相关文章:

  • 贵州城乡住房和建设厅网站建站系统社区
  • 做app护肤网站一个完整的工程项目流程
  • 珠海企业建站模板cms织梦织梦修改网站源码
  • 建立导购网站卸载wordpress
  • 广西建设工程管理网站奇艺广州网站建设熊掌号
  • 贵州城乡建设厅城乡建设网站网络推广培训班培训机构
  • 上虞区住房和城乡建设部网站wordpress 主题 2016
  • 太原网站制作在线通州建设局网站
  • 设计说明室内设计哪里有做网站优化的公司
  • 网站标题关键词堆砌公司logo如何注册
  • 青岛 建网站做网站同行
  • 怎样建设一个能上传数据的网站网络营销的六个特点
  • 网站开发公司组织架构wordpress数据库权限
  • 两学一做考学网站莆田软件定制开发
  • 平度做网站公司做网站送域名和邮箱
  • 建设一个网站思路医疗保险网站开通建设
  • 老男孩linux网站常州辉煌网络网站制作
  • 网站首页欣赏90设计网官网登录
  • 网站建设分解结构c 网站开发 书
  • 二手车网站开发数据库设计湖南旅游网站开发
  • 广元做开锁网站广州seo服务外包
  • 中标公示查询网站wordpress怎么破解插件
  • 金种子酒业网站建设廊坊企业网站团队
  • 广州市手机网站建设平台美辰网站建设
  • 建设工程部网站拉新推广赚钱的app
  • 金马国旅网站建设汽车 营销 网站建设
  • 婚纱网站免费源码免费logo
  • 昆山网站建设书生商友淄博网站优化推广
  • 行业门户网站方案图片演示dw做网站
  • 工商网站如何做实名问答网站模板下载