reference 相关问题

引用是一个值,它使程序能够间接访问计算机内存或某些其他存储设备中的特定数据,例如变量或记录。

Java / Eclipse 中的 NoClassDefFound:如何对另一个项目进行干净、简单的引用?

我一直在寻找这个问题。但是,我找不到任何好的解释或如何实际解决这个问题。 问题是,然后我在我的项目中添加了一个项目引用,我...

回答 2 投票 0

C++ 如何安全地获取向量元素的指针/引用?

如何获取和存储对向量中元素的指针/引用而不用担心内部向量重新分配? 例如: std::向量 v1; v1.push_back(10); std::向量 v2; v2.

回答 1 投票 0

带有大括号初始化的向量引用参数。为什么它有效?

我了解带有左值的引用类型它应该有地址。 但是,我不明白为什么它有效。 我认为 {1} 是右值,但它工作正常。 void func(const 向量 我了解具有左值的引用类型,它应该有地址。 但是,我不明白为什么它会起作用。 我认为{1}是r值,但它工作正常.. void func(const vector<int>& v) { ; } int main() { func({ 1 }); return 0; } { 1 }根本不是一个表达式。它没有任何值类别或类型。 函数参数中的大括号{ /*...* }仅表示该参数应像变量定义中的= { /*...*/ }一样进行初始化。 所以这意味着参数的初始化将完全按照您所写的那样进行 const vector<int>& v = { 1 }; 这是可行的,因为const左值引用的初始化规则允许创建一个可以绑定引用的临时对象。 所以这(几乎)相当于 const vector<int> unnamed = { 1 }; const vector<int>& v = unnamed; 其中 unnamed 是一个没有名称的临时对象,其生命周期延长到发生函数调用的完整表达式的末尾。 它之所以有效,是因为常量引用可以绑定到临时(右值)。

回答 2 投票 0

如何获取 appsheet 日历参考来读取 2025 年的日期?

我在事件列表和日历之间有以下应用表参考。 SELECT(日历[Var],CONTAINS([位置],[_THISROW].[键])) 这将获取截至 2024 年 12 月 31 日的所有数据,但停止于...

回答 1 投票 0

重置 Angular 模板引用变量

在我的 Angular 应用程序中,我将此代码与模板引用变量 swiper 一起使用 div *ngIf="stateName == 'SCHEDULE'"> 在我的 Angular 应用程序中,我将此代码与模板引用变量一起使用 swiper div *ngIf="stateName == 'SCHEDULE'"> <swiper-container #swiper [pagination]="true"> ... 如果 stateName 从 SCHEDULE 更改为另一个字符串,然后又返回 SCHEDULE,则 @ViewChild 变量在组件中未定义 (@ViewChild('swiper') public swiperRef: ElementRef | undefined;) 我现在的问题是如何重置 swiperRef 变量? 在 stateName 更改后尝试使用 ChangeDetectionRef.detectChanges。

回答 1 投票 0

如何根据单元格的值引用不同的工作表?

我有一个包含多个工作表的 Excel 文件(Day1、Day2、Day3 等,没有空格)。 在主表上,当我从下拉列表中选择一个值时,我需要能够从每张表中提取某些数据......

回答 1 投票 0

社区您好,我需要您的帮助,请提供一个 Excel 解决方案,用于更改对另一张工作表的引用的公式

我知道提出了类似的问题并找到了解决方案,但我相信我的情况有点不同。老实说,我决定加入这个特定社区的原因是我发现......

回答 1 投票 0

既然字符串文字被视为左值,为什么绑定左值引用必须是 const?

我知道已经有一些与此类似的主题(例如这个)。 本主题中给出的示例是这样的: std::string & rs1 = std::string(); 显然, std::string() 是一个 rv...

回答 4 投票 0

什么时候在 C++ 中返回 const 引用是个好主意?

是否有任何文章介绍何时使用 const 引用作为返回类型是一个好习惯? 这不是一个关于特定问题的问题,而是一个教育问题。 我们在

回答 2 投票 0

为什么 Rust 不增加这个临时变量的范围?

为什么 Rust 不扩展以下代码中 val3 引用的临时值的范围: fn 主() { 让 mut vec = vec![1, 2,3]; 让 val1 = vec.get(0).unwrap_or(&0); ...

回答 1 投票 0

为什么 std::tuple 可以包含引用?

我很久以前就知道标准库容器不接受引用。例如。这个简单的程序将无法编译,因为它试图创建一个 int& 向量: #包括 在...

回答 1 投票 0

使用 VBA 在 Solidworks 中的打开零件中打开参考装配体

好奇,是否可以打开您在 Solidworks 中打开的零件的参考装配体?引用的装配体具有与打开的零件完全不同的目录。

回答 1 投票 0

Microsoft.Owin.Host.HttpListener 未复制到引用项目的构建输出

我正在从同一解决方案中的另一个项目引用 Visual Studio 解决方案中的一个项目。被引用的项目(项目 B)具有 Microsoft.Owin.Host.HttpListener nuget 包和 s...

回答 3 投票 0

如何解决闭包中生成的“无法返回引用临时值的值”?

我有一个结构,Thing 实现 Clone 但不实现 Copy,它有两种方法,一种用于工作,另一种用于从现有的“父”Thing 派生“子”Thing。不是...

回答 1 投票 0

C++:参数传递“通过引用传递”

我理解与任何其他变量一样,参数的类型决定了参数与其参数之间的交互。 我的问题是你这样做的原因是什么

回答 4 投票 0

当我使用分组时,如何使用 gsub 在 Ruby 正则表达式 (regex) 中反向引用?

我想修补一些从网页中提取的文本数据。 样本: t="第一句。第二句。第三句。" 第二句末尾的点后面没有空格。这...

回答 3 投票 0

如何在 GLSL 中引用结构体?

C++ 风格的引用可以使代码更加简洁,但 GLSL 没有。 例如。这段代码: 对于 (int i=0; i C++ 风格的引用可以使代码更加简洁,但 GLSL 没有。 例如。此代码: for (int i=0; i<numCascades; ++i) { if (eyeDistance < shadow.cascade[i].end) { vec3 sc = eyePos*shadow.cascade[i].transform; // ...many more references to "shadow.cascade[i]" here } } 如果我可以输入以下内容会更整洁: for (int i=0; i<numCascades; ++i) { const ShadowCascade& cascade = shadow.cascade[i]; if (eyeDistance < cascade.end) { vec3 sc = eyePos*cascade.transform; // ...many more references to "cascade" here } } 我可以输入这个(与上面相同,但没有“&”): for (int i=0; i<numCascades; ++i) { const ShadowCascade cascade = shadow.cascade[i]; if (eyeDistance < cascade.end) { vec3 sc = eyePos*cascade.transform; // ...many more references to "cascade" here } } 这会导致性能损失吗?级联结构是否会被复制到局部变量中(就像在 C++ 中一样)? 人们如何在 GLSL 中整理此类代码? (使用#define?(呃!)) 是的,你是对的,你不能像在 C++ 中那样在 GLSL 中创建引用或指针。 在最后一个示例中,您复制了整个结构(const ShadowCascade cascade = shadow.cascade[i];)。但你呢?在编译器理论中,有一种称为复制传播的优化技术。这意味着,当您访问 cascade.transform 时,您将获得与访问 shadow.cascade[i].transform 相同的值。为什么?因为您复制了结构,并且从那时起就没有更改任何一个结构。如果它一直选择shadow.cascade[i].transform,则变量cascade永远不会被使用,因此它可以消除初始化和复制。因此,理论上编译器可以计算出,如果它始终使用原始数组,则不必复制结构。 但是,当您使用例如 glCompileShader 时,您将在驱动程序中使用编译器。 Nvidia、AMD 和 Intel 有不同的编译器,可能不同的驱动程序版本包含不同的编译器,也可能它们在不同的 GPU 上的工作方式不同。因此很难判断编译器是否使用了这种优化。我的建议是将 GLSL 着色器编译为 SPIR-V。它类似于 C# 的 IL,或者 Java 的 Java 字节码。它是一种架构中立的中间语言。这样,在编译着色器后,您可以检查结果,并检查副本是否存在。 SPIR-V 还有很多其他优点,例如减少运行时编译时间(因为从 SPIR-V 编译为机器代码比从 GLSL 编译更快)。 但是,SPIR-V 并非随处可用。它始终在 Vulkan、OpenGL 4.6 和 OpenGL ES 3.2 中可用。它通常在较旧的 OpenGL 和带有扩展的 OpenGL ES 版本中可用,但它在网络上永远不可用。在任何地方都有效的解决方案是宏(正如您所提到的)。在我学习编程的大学里,教授们说宏是邪恶的。是的,错误地使用宏和其他预处理器指令并不难。然而,后来,当我担任图形程序员时,我看到人们经常使用这些东西,因为有时没有真正的替代品,或者这是性能最高的。因此,虽然我理解您对使用宏犹豫不决,并且您绝对不应该将它们用于所有事情,但我认为编写这样的内容不是问题:#define CASCADE(i) shadow.cascade[i]。它将适用于所有 GLSL 版本、所有供应商、驱动程序,您不必处理 SPIR-V 等。 总之,我建议您使用 SPIR-V、宏或两者。

回答 1 投票 0

当函数返回时,如果通过引用传递给函数的变量需要再次缓存,我如何记录?

(精彩的)书《C++ 模板》(第 109 页)中的以下陈述向我建议,通过引用将参数传递给函数可能会迫使处理器缓存关联的变量...

回答 1 投票 0

C++ 成员函数在声明后用 & 或 && 标记 - 这是什么意思?

我知道 C++ 类定义中的成员函数的签名可以附加 const - 我认为这可以保证该方法不会更改(......的非可变成员)

回答 1 投票 0

相当于 AtomicReference,但没有不稳定的同步成本

相当于什么: AtomicReference ref = new AtomicReference( ... ); 但没有同步成本。 请注意,我确实想在里面包含一个引用

回答 10 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.