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

我如何使用像NativeList<NativeList<Vector3Int>>这样的东西?或任何其他方式?

NativeList<NativeList<Vector3Int>> 这样的结构在Unity或其他游戏引擎中可能会用到,尤其是在处理大量数据且需要高性能的场景下。NativeList 是Unity提供的一个用于高性能数据处理的容器,而 Vector3Int 则是一个三维整数向量。

基础概念

  • NativeList: Unity的 NativeList<T> 是一个类似于标准C#列表的结构,但它提供了更好的性能,特别是在与Unity的内部机制(如Job System)一起使用时。它是一个连续的内存块,适合进行批量操作。
  • Vector3Int: 这是一个三维向量,其中的每个分量都是整数。它通常用于表示网格中的位置或其他需要精确整数值的三维坐标。

使用方式

以下是如何使用 NativeList<NativeList<Vector3Int>> 的基本步骤:

  1. 引入命名空间:
  2. 引入命名空间:
  3. 创建和初始化:
  4. 创建和初始化:
  5. 添加子列表:
  6. 添加子列表:
  7. 访问和修改元素:
  8. 访问和修改元素:
  9. 释放内存: 当不再需要 NativeList 时,应该释放其占用的内存。
  10. 释放内存: 当不再需要 NativeList 时,应该释放其占用的内存。

应用场景

  • 大规模数据处理: 当你需要处理大量三维坐标数据时,使用 NativeList 可以提高性能。
  • 并行计算: 结合Unity的Job System,可以在多个线程上并行处理这些列表中的数据。

注意事项

  • 内存管理: 必须手动释放 NativeList 占用的内存,否则可能会导致内存泄漏。
  • 线程安全: 在多线程环境中使用时,需要注意线程安全问题。

示例代码

以下是一个完整的示例,展示了如何创建、填充、访问和清理 NativeList<NativeList<Vector3Int>>

代码语言:txt
复制
using Unity.Collections;
using UnityEngine;

public class NativeListExample : MonoBehaviour
{
    void Start()
    {
        NativeList<NativeList<Vector3Int>> nestedLists = new NativeList<NativeList<Vector3Int>>(Allocator.Persistent);

        // 添加第一个子列表
        NativeList<Vector3Int> innerList1 = new NativeList<Vector3Int>(Allocator.Persistent);
        innerList1.Add(new Vector3Int(1, 2, 3));
        nestedLists.Add(innerList1);

        // 添加第二个子列表
        NativeList<Vector3Int> innerList2 = new NativeList<Vector3Int>(Allocator.Persistent);
        innerList2.Add(new Vector3Int(4, 5, 6));
        nestedLists.Add(innerList2);

        // 访问并打印第一个元素
        if (nestedLists.Length > 0)
        {
            NativeList<Vector3Int> firstList = nestedLists[0];
            Vector3Int firstElement = firstList[0];
            Debug.Log($"First element: {firstElement}");
        }

        // 清理内存
        for (int i = 0; i < nestedLists.Length; i++)
        {
            nestedLists[i].Dispose();
        }
        nestedLists.Dispose();
    }
}

可能遇到的问题及解决方法

问题: 内存泄漏。 原因: 忘记调用 Dispose 方法释放内存。 解决方法: 确保在不再需要 NativeList 时调用 Dispose 方法。

问题: 多线程访问冲突。 原因: 在多个线程中同时读写同一个 NativeList解决方法: 使用锁或其他同步机制来保护对 NativeList 的访问。

通过以上步骤和注意事项,你可以有效地使用 NativeList<NativeList<Vector3Int>> 来处理复杂的数据结构。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Unity 随机房间地图生成

这次我们先讨论如何快速生成符合各种随机要求的房间。 一般来说,一个房间的高度是一个相对固定的值,可以根据面板上的参数进行必要的调整,而真正参与随机的应该是房间的长,宽和位置。...Dx = new Vector3Int(1, 0, 0); 31 Vector3Int Dy = new Vector3Int(0, 1, 0); 32 Vector3Int Dz =...,生成了重叠的房间就会被视作是一次失败的随机试验,之前尝试过直接用物理系统推开失败了,可能是使用有误,如果有知道原因的欢迎与笔者分享,共同进步,有更好的避免矩形重叠的算法当然更好 (无奈笔者没能想出来)...,是为了避免两个生成的房间贴得太紧,这样至少每个房间与其它房间间隔一个单位格或以上。...bc.size = new Vector3(rt.Length, FixedUnitHeight, rt.Width); 115 116 //目前用物理方式似乎难以推开重叠的房间

2.3K10

如何签署开源软件的发布

用户如何验证它?我们为什么还要再这样做?如果你(可以理解地认为)这是一个解决了的问题,你像有很多人一样,但你要失望了。以下是我认为最有意义的,以及我打算在我所维护的项目中尝试的内容。...也有些 SBOM 的东西。不要太担心,选择一个你喜欢并会使用的。 像Tekton Chains[4]这样的项目旨在使这变得更容易,但许多构建系统也可以通过配置或扩展来以这种方式运行。...可以在任何地方发布这些签名,包括创建初始批准的任何地方(拉请求、票据或电子邮件线程)。透明日志即将到来! 如果你真的很偏执/担心的话,还有其他的东西 这显然不包括TUF[6]。...可以在任何地方发布这些签名,包括创建初始批准的任何地方(拉请求、票据或电子邮件线程)。透明日志即将到来! 如果你真的很偏执/担心的话,还有其他的东西 这显然不包括 TUF。...你的撤销系统是 Twitter 或 MITRE。撤销工件,而不是密钥。像对待其他易受攻击的工件一样对待受损或被篡改的工件。你的 CVE 扫描仪应该检测到这些,而不是你的 PKI。

1.1K20
  • 之所以被裁也许是少了这些东西

    在这篇文章中,我将提供一个不完整的编程主题列表,关于这些东西,人们总是错误地认为我很懂。 我并不是说你不需要学习它们,或者我不知道其他有用的东西。...我写过几行C并理解指针是什么,但我不知道如何使用 malloc或其他手动管理内存的技术。 也从来没玩过Rust。 网络协议栈。我知道计算机有IP地址,DNS是解析主机名的方式。...我知道有像TCP/IP这样的低级协议来交换数据包(也许是这样的?)以确保完整性。 就是这样 —— 我对细节很模糊。 容器。 我不知道如何使用Docker或Kubernetes。(这些是相关的吗?)...我知道如何运行Node,怎样使用像fs这样的API来构建工具,并且可以设置Express。 但我从来没有在Node中涉及过数据库,也不知道如何用它编写后端。...Floats才是我的菜。 CSS方法论。我使用BEM(仅仅是CSS部分,而不是原始的BEM),这就是我知道的一切。我没有尝试过OOCSS或其他方法。 SCSS/Sass。从来没有学过它们。 CORS。

    49620

    【译】Rust in Production | Arroyo : 为简化流数据工程师的工作而生

    还有其他方法,像 Arroyo 和 Materialize 这样的系统也支持基于更增量式的计算方式,我们实际上是认为我们永远不会完成。 我们永远不会知道我们是否获取了特定时间段的全部数据。...从很多方面来看,当前的系统开发是对之前使用 Java 编写系统的一种反思。许多人发现,通过用像 C++ 或 Rust 这样的非托管语言重新编写这些系统,可以显著提升性能并简化操作。...核心原因是,目前生态系统中有很多 AsyncRust,如果你想使用常见的网络库、数据库驱动程序或几乎任何来自网络编程生态系统的东西,你在某个时候必须处理异步。...问:你提到的所有东西对于一般开发人员来说都是相当低级的,或者至少需要对如何构建这样的系统或架构这样的系统具有很多专业知识才能表现得很好。...很难说服数据科学家使用除Python 以外的任何东西。因此,如果您想提供更好的性能,我认为这种在 Rust 中编写核心代码然后将其包装在高级语言中的方法已经取得了非常成功的效果。

    88711

    为什么Viable使用Next.js和Node.js进行AI应用开发

    这些数据可以来自在线评论、调查反馈、社交媒体以及像 ZenDesk 或 Intercom 这样的客户服务平台 —— 基本上是客户与公司交流服务的任何地方。...“所以许多其他框架,你必须进入并说 ‘我希望我的 API 路由看起来像这样,只接受这些内容,并真正深入做那些细枝末节的工作。...“那里有很多东西,生态系统真的很容易插接,并为我提供了很多我不必自己构建的工具。”...使用 Node 时,你比使用其他东西时更少地考虑多任务处理。” 开发 AI 时的注意事项 Erickson 说,开发人员在投入开发 AI 之前应该意识到的一件事是,大多数 AI 都需要支持实时流。...“如果你与 ChatGPT 或任何东西聊天,当你这样做时,你实际上可以看到文本正在流入,”他说。“它不喜欢有一个小的加载指示器,然后一次性输入所有文本。

    11410

    一起使用Kubernetes和Docker的优点

    即使实现了自动化,部署也可能过于复杂或痛苦。也许约翰甚至不得不花费整个周末进行部署并修复各种破碎的东西。 我们都希望部署可能像按下按钮一样无聊。...他从.NET Core应用程序开始,Dockerfile看起来像这样。...如果他们想要对框架或某些依赖项进行升级,他们就会这样做,而不必担心会影响当前的工作。 使用Docker打包并发送您的应用程序,而不必担心应用程序是否会在本地测试后在其他地方工作。...Kubernetes将帮助您在任何地方以相同的方式部署。为什么?因为您只需要用声明性语言说明您希望如何运行容器。...他可以在这台计算机或任何其他环境(包括生产环境)上运行完全相同的命令,并且它将以相同的方式在任何地方运行。但这不仅仅是那个。Kubernetes会根据您使用的yaml定义不断检查部署状态。

    5.7K00

    笨办法学 Python · 续 练习 0:起步

    IDE 通常与单一语言相关联,因为它对源进行高级的检测,并为你提供编写代码的快捷方式。然后,你不必记住任何事情,只需大多数任何项目中,ctrl-space你的方式。...你可以使用 IDE 做的一切事情,你也可以使用一个真正的程序员的文本编辑器来做,因为像 Vim,Emacs 和 Atom 这样的编辑器是可脚本化和可修改的,它们永不过时。...你会希望得到一个方格纸的本子,或者可能是带有点而不是线的纸张,以及一袋好的铅笔。你可以使用任何你喜欢的东西,但本书中的一部分过程是在计算机外部跟踪事件,在解决问题时,作为改变你的观点的一种方式。...我说这是可选的,因为完成记录你的工作可能太困难了,其中你需要检查并分析一些线索,关于如何改善你的流程。我这样做了一段时间,它帮助了我很多,但它也扼杀了我的创造力。...我也认为,在工作时记录你的实际的脸部和身体,有助于检查你是否拥有良好的姿势或其他身体习惯,它们可能会使身体损伤,但同样,工作时记录自己一整天太麻烦了。这也是你不能与其他人一起做的事情。

    54930

    对话Apache Hudi VP,洞悉数据湖的过去现在和未来

    从体系结构上讲,我认为让数据更快进入由Apache Hudi之类的功能驱动的原始数据湖仍然有意义,这样对于您要执行的任何下游处理开销都很少。然后您选择要使用哪种工具整理数据(如果需要)以进行分析。...,转储到S3或其他存储上的所有数据,您都需要对其进行管理,需要删除内容,需要纠正或掩盖其中的内容,这个场景适用于任何跨国公司,然后这也引起了人们对数据湖的大量关注,这就是我们感到Hudi非常适用的地方。...您可以随时从一个云仓库转移到另一个仓库,也可以像您喜欢的那样引入或淘汰旧的实时分析引擎。如果需要您将几乎可以重新计算任何东西,并且此模型具有很大的自由度,我认为这就是我应该朝着的方向发展。...我要说的第三点,实际上是Hudi目标的核心,作为一个项目我们要思考的要比我们做的要远得多,我们必须想一想如何从流处理中学习并让我们的批处理作业更多,如增量运行无需过多处理,因为任何时候您都会遇到围绕数据新鲜度或查询性能的类似瓶颈...Hudi表,它的行为就像其他任何Hive表一样。

    76020

    Stephen Wolfram:如何训练孩子们的计算思维(III)

    我们的目标就是让这门语言越自动化越好——这样使用 Wolfram 语言的任何人,无论是顶尖的专家还是中学的孩子,只要提供概念和他们的计算思维,这门语言就可以自动做剩下的工作,并且完成赋予的任务。...孩子又可以从用 Wolfram 语言写东西中学到什么呢?首先最重要的,他们学习了计算思维。计算思维是一种非常新的思考方式。但是它和孩子们做的其他事也有一些相同的特点。...可以问问题,但是这些问题更多的像一般的"技术支持":帮我理解这个已经存在的特点,而不是"我们来说一些新东西吧"。有几次我在给孩子们聊科学的时候做过"问我任何问题"的部分,很有意思。...所以我尝试去发现很多不同的问题,在这个过程中我看到了很多别人没见过的东西。而现在有了 Wolfram 语言,做别人没做过的事情已经变得很容易。当然,不是所有孩子都和我一样有这样的动力。...但更常见也更有用的是把问题与外部世界联系起来。即便是像“已知一堆 x,y 数对,决定是否应该绘制为单独的点还是连接它们的线的好的算法是什么?”这样的问题实际上也跟人们对世界的思考方式有关。

    68250

    即将三十,我不敢说我精通任何一项技术

    AWS S3这样的东西; 手里有把锤子,全世界都是钉子:精通写bash脚本的人,所有的运维工作都倾向于写bash来解决运维问题,不知道世界上还有Ansible这样方便的东西,也不知道有时候根本问题不在运维...使用什么DSL来描述这些机器的配置 最后根据这些问题进行深入地学习,这样我们就可以从被动学习变成主动学习,有方法论的学习方式。甚至找到这些工具的知识边界。...按道理,使用这样的思维方式(有点像方法论),任何一门技术都可以做到精通,但是我目前就是没做到精通。 因为我排斥用脑袋记东西。我认为记不了的东西或者能不记的东西,它就不值得记忆。...比如如何将字符串ip转成一个整型数字、Ansible里某个module的具体用法。 而现实中,我对比其他的运维人员,我发现我用Ansible用得已经非常好了,Ansible里的概念我基本已经理解透了。...和你年龄没有任何关系。 说到底,写不写代码,做不做管理,都是个非常私人的问题。我们没必要那么在意别人怎么看。 最后,我深爱着写代码。这不会因为我目前或将来是否精通某项技术而改变。

    2.3K00

    笨办法学 Python3 第五版(预览)(二)

    我正在以链式方式执行这个操作,所以我有点像使用函数创建一个公式。看起来很奇怪,但如果你运行脚本,你会看到结果。你应该尝试找出能够重新创建相同操作集的正常公式。...5 }; 通过以下方式创建数据对象: 用{(大括号)打开它 写入键,这里是一个字符串,但可以是数字,或几乎任何东西 写入一个:(冒号) 写入值,可以是 Python 中有效的任何内容...其他时候,惊喜是一种新颖的完成某项任务的方式。无论如何,当你进行新颖的组合时发生了什么并不是真正的惊喜或秘密。对于你来说可能是惊喜的,但语言规范中通常会有一个解释(即使这个原因绝对愚蠢)。...,所以()告诉 Python 像调用任何其他函数一样调用它 花些时间理解这是如何工作的,并在corvette上编写自己的函数以使其执行更多操作。...它应创建一个包含正确设置并已包含你创建的所有函数的dict。 它应返回这个dict,这样人们可以将结果分配给任何他们想要的东西,并以后使用。

    20710

    OpenAI掌门人最新访谈:“末日概率”不恰当,面对AI技术革命既乐观又悲观

    你的“末日概率”是什么?奥特曼:我认为这是一个糟糕的问题,我很高兴我没有冒风险谈论过这种问题。对人们来说这是一种很好的方式,听起来很聪明和重要,就好像我和其他任何人一样喜欢对数字发表意见。...五年或十年前,你是否期望人工智能GPT会变得像现在这样强大?奥特曼:老实说,我仍然认为它不是很好。我认为我们会把它做得很好,但我们面前有大量的工作。...现在,我认为人工智能更像其他技术革命一样,希望它能够给人类带来最大、最好、最重要的好处。我们的人类科技树上有了一款新工具,人们正在使用它来创造惊人的东西。...奥特曼:我的意思是,有些方面太乐观了,同时也太悲观了。如果我们开发出的东西像这里所有超级聪明的学生一样聪明,那是一项了不起的成就。从某种意义上说,世界上已经有很多像这样聪明的人了。...科恩布鲁斯:像ChatGPT这样的技术可能会在哪些方面威胁或帮助未来的工作?它如何帮助人们未来的就业?

    21110

    从业18年,我总结了9个最有价值的经验

    作者 | Fernando Doglio 译者 | 张健欣 策划 | 褚杏娟 我从 14 岁就开始在父母的卧室里写代码。我通过非常慢的网络阅读任何我能够获得的东西。...我认为,任何认真对待自己职业的人都会认为自己有点儿像艺术家。我们虽然不会在数百万人面前唱歌或者作画,但我们有时候在以一种非常优雅高效的方式编写代码、解决非常复杂的问题,我们同样为自己的工作感到自豪。...开发者和数学家一样,解决问题的方式都有点儿像艺术家。 正因如此,我们很维护自己的代码——就像熊妈妈照顾她的后代那样。亲手写下这些代码的我们,无法忍受别人对他指指点点。 但这对任何人都没有帮助。...早期优化意味着要边写代码边优化,这是一种危险的方式,因为优化时,我们都是在对执行时间、数据要求、内存需求以及其它我们尚未看到的因素进行假设,任何这样的假设都可能是错误的,最终会在你的逻辑中引入 bug。...如果你每天写 8 小时的单元测试,也许可以考虑从头创建一些东西并且开发一些功能。如果你厌倦了独自工作,可以考虑为现有的项目做贡献,体验一下如何与其他人协调工作。

    25620

    Java之父接受Evrone专访:您需要的软件可靠性越高,静态类型语言的帮助就越大

    我实际上发现类对于组合非常有效。对于如何做不同的事情,我真的没有任何好的、清晰的想法。我会以不同方式做的一些事情有点奇怪。在 C 中有宏,这几乎是一场灾难,因为宏不是语言的一部分;他们有点不在乎。...另一方面,它非常难以使用。事实证明这是可能的。但你能走多远?它们可能是有限的。所以,如果你看看像 Lombok 这样的东西,我发现它是其中之一......好吧,我对它有强烈的爱恨情仇。...我现在看到,像 GitHub 这样的社交编码平台得到了大公司的支持,它们帮助个人开发人员和企业或工业软件开发人员进行开源开发。那么我们可以将今天称为开源软件的黄金时代,还是不是很清楚?...对我来说,协程的问题之一,这就是我很久没有使用它们的原因,是它们实际上并没有让你这样做或让你利用多个处理器。你不能做真正的并行。...当我们谈论不同的语言时,在您个人看来,现在教新软件开发人员的最佳语言是什么,作为他们的第一语言?也许在研究生院或大学。 James:我显然有偏见。Java 已经以这种方式成功使用了很长时间。

    58730

    Linux创始人Linus Torvalds访谈,Git的十年之旅

    感觉是这样)试图在Tridge和Larry McVoy之间调解,但是最终它显然无法工作了。所以在某种程度上我确定了我无法再继续使用BK,但是我真的不想再回到那个旧的BK的日子。...Torvalds:你可以实际的在Git源代码存储库中去看看它是如何成型的。它花费我大约一天的时间来让其“自托管”,这样我就可以使用Git本身来将东西整合到Git中。...白天的工作是主要的,但也有一些事在半夜或凌晨两点。最有趣的部分是它如何成型的,第一次提交到Git树种的东西是没有太多代码的,但是它已经做了基础——足以支撑它。...我在整个项目开始之前考虑了一段时间,包括其他人已经遇到过的问题,我看到我想要避免去做什么。 它辜负了你的期望了吗?你如何评价它如今的工作?对它有哪些限制呢?...它不是像Git那样让所有事物正确,而是以某种方式解决所有真正的基本问题(其他SCM不曾解决的)。 为什么Git可以很好的工作于Linux?

    1.4K60

    发布笔记本的新时代

    在桌面或云端创建一个笔记本,并写上代码、分级结构、交互元素、图形等等。等这个笔记本在云端发布时,人们就可以像访问任何网页一样访问这个笔记本,只是这个笔记本会自动“活过来”并且允许所有方式的交互。...还有其他可以是动态的内容:使用像Dynamic这样的函数可以动态实时地从Wolfram知识库或Wolfram Data Drop中提取数据,或者——如果用户允许的话——可以从用户的电脑相机或麦克风中提取数据...总之你可以用任何笔记本——甚至是那些尺寸比较大的——在云端快速发布。 计算型期刊 在1988年我们发明了笔记本后不久,我就开始思考如何创造出一种新的带有计算型日志的发布方式。...无论是直接在笔记本内部,还是在Wolfram数据资源库,或云端的任何其他地方,都会有从比如观察或实验得来的底层数据。在笔记本中会有根据这些数据计算图形或其他输出的代码。...改变我工作的方式 如果一样东西可以改变人们工作的方式,那么这是一个很重要的判断信号。对我而言在笔记本发布方面这就是正在发生的事情。 我可能会在搭建笔记本的时候做一个演讲,比如做一个现场试验或者演示。

    53510

    python中import星_Python imports 指北

    像往常一样,如果你发现任何错误,请告诉我!...这非常简单 - 模块是一个包含Python代码的文件,可以使用解释器(python程序)执行或从其他模块导入。...这是一个很好的惯例配置示例,我们不需要描述任何配置或注册任何东西。约定包含__init__.py的任何目录都是Python包。 除了标识一个包,__init__.py还有一个目的 - 包初始化。...或menu.MENU :-)这种方式有点像Go中的软件包,但请注意,你正试图滥用Python,不鼓励这样做,因为在你要代码检查时,会让你抓狂的。...最后,Python中的所有东西都非常简单,即使它不能完整地满足你的需求,你总可以在运行时随时修改任何内容。 目前想写的就这些,谢谢你的关注。 接下来如何,下次分解!

    1.1K00

    笨办法学 Python · 续 练习 3:质量

    这基于我所做的,几乎每一个创造性的事情的观察,它是这样: 你创造的东西需要很长一段时间。这可能是软件,绘画,写作或任何需要时间的东西。...我相信这种现象会发生,是因为你记得你如何实现了它,它影响着你所认知的概念。创造的行为往往是一个积极的思想和工作流,所以你的回忆更积极或中立。...在其他创意学科中,没有这么多的自我批评技巧,并且在软件中也只有很少。事实上,我发现程序员由于他们使用“程序员的方式”来完成代码而声名狼藉。...但是没有,程序员经常在编译器(或测试套件)没有错误时就停止了。 在这本书中,你将学习如何执行自己的一套检查,类似于画家使用的检查。...他们是看待你的代码的方法,并断开了你如何制作它的历史,秘密就变成了检查清单。颠覆你的工作记忆的方式,是强制自己遵循一套检查,它假设你写的东西有缺陷。

    28110

    编写模块化CSS——BEM

    然后,当我尝试不同的方法时,我开始把我认为有意义的东西包含在我的探索过程中。 在这篇文章中,我想和大家分享一下我如何构建 CSS 以及为什么我这样做。 希望它可以帮助你找到你喜欢的方法。...但是有两种方法可以编写简洁的 CSS,而不需要额外的 class! 方法 1:使用 mixin 第一种方式,如果使用 Sass 或任何其他预处理器,则 使用mixin来封装 需要重用的 所有代码。...你能立即知道哪些东西是一个子元素。 为了解释以上两点,考虑使用两个单独的 class 的替代方法(许多框架这么做的)。你可能会用这样的东西: ? ?...如果你的 class 最终像这样 .form__row__input,你做的事情是非常错误的。(我开始时这样做过,所以你也不要对自己感到太糟糕!)。 有两种方法可以绕过长长的 BEM 链式命名。...其他两个方面尚未考虑: 我必须 立即知道组件是否使用 JavaScript 。 我必须 立即知道编辑一个 class 是否安全,会不会干扰其他 CSS。

    2.1K70

    十年学会编程

    信步走进任何一家书店,你会看到名为《如何在7天内学会Java》的书,还有各 种各样类似的书:在几天内或几小时内学会Visual Basic, Windows, Internet等等,一眼望不到 尽头。...正如亚力山大教皇所说,浅尝辄止是危险的事情。 Pascal: 在三天时间里,你可能学会Pascal的语法(如果你 已经学过类似的语言),但你学不到更多的如何使用这些语法的知识。...这是我为编程成功开出的方子: 设法对编程感兴趣,并且因为它有趣而编一些程序。确保编程一直充满足够 乐趣,这样你才愿意投入十年宝贵时间。 与其他程序员交流;阅读其它程序。...这比任何书本或训练课程都 重要。 写程序。最好的学习方式是 从实 践中学习。...它可以是ANSI C++委员会, 也可以是决定你周围小范围内的编程风格是应该两个还是四个空格缩进。通 过任何一种方式,你了解到其他人在某种语言中的想法,他们的理解深度,甚至一 些他们这样想的原因。

    30320
    领券