gpt4 book ai didi

c++ - 需要算法方面的建议

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:38:42 25 4
gpt4 key购买 nike

我有一个代码,其中我为 2D3D 使用了两个不同的函数。在坐标列表的 for 循环中,我想通过检查 dimensions 分别调用函数。但是,使用 if 检查每个坐标的维度是非常低效的,因为维度检查只需要一次(在代码的开头)。

请注意,2D/3D 函数 位于单独的文件中,然后坐标列表位于单独的文件中。

谁能建议一种调用适当函数的有效方法,即在代码开头仅对 dimensions 使用一次检查?

伪代码:文件1.cpp

readcoordinates();  //store the coordinates info;
for(number of coordinates)
checkfunction(coordinates[i]); //function in file2.cpp

文件2.cpp

checkfunction(coordinates[i]){
//requires dimension info here for complicated checking,
// which cannot be explained here.
// Since entire list of coordinates is same dimension, multiple if checks can be avoided here

}

最佳答案

将维数作为模板参数。这使您可以避免代码重复,但编译器将摆脱所有尺寸检查,为 2-D 创建一个代码版本,为 3-D 创建一个单独的代码版本,两者都得到充分优化。

您不能在运行时提供模板参数,因此您需要一个动态检查维度的调度函数,一次,然后调用 2-D 或 3-D 模板实例。

调度函数中if-elseswitch 的替代方法是使用虚拟调度(每个虚拟实现然后调用正确的模板实例化来完成实际工作)。

关于c++ - 需要算法方面的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19571858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com