在C++中使用指针来简化我的代码
Using pointers to simplify my code in C++
这是我的代码:
void spin(double angle) {
// Convert degrees to radians
angle = get_radians(angle);
vector<complex<double>> coordinate_list;
coordinate_list.push_back(co1);
coordinate_list.push_back(co2);
coordinate_list.push_back(co3);
coordinate_list.push_back(co4);
// Origin point
complex<double> origin(0,0);
for (int i = 0; i < coordinate_list.size(); ++i)
{
complex<double> current = coordinate_list[i];
double x = current.real();
double y = current.imag();
// Assuming all rectangles origins are at (0,0)
float temp_x = origin.real() - x;
float temp_y = origin.imag() - y;
x = round(temp_x * cos(angle) - temp_y * sin(angle));
y = round(temp_x * sin(angle) + temp_y * cos(angle));
complex<double> rotated(x,y);
coordinate_list[i] = rotated;
}
co1 = coordinate_list[0];
co2 = coordinate_list[1];
co3 = coordinate_list[2];
co4 = coordinate_list[3];
}
我正在寻找一种方法来避免循环后的部分。我已经有了co1-4的值,这个方法可以在任何点调用来旋转坐标。我宁愿直接访问这些值,而不是将它们粘贴在列表中,更改它们,然后重新分配。
有办法做到这一点吗?
使用指针和引用:
vector<complex<double> *> coordinate_list;
coordinate_list.push_back(&co1);
coordinate_list.push_back(&co2);
coordinate_list.push_back(&co3);
coordinate_list.push_back(&co4);
// Origin point
complex<double> origin(0,0);
for (int i = 0; i < coordinate_list.size(); ++i)
{
complex<double> ¤t = *coordinate_list[i];
...
complex<double> rotated(x,y);
current = rotated;
}
使用一个单独的函数而不是for循环怎么样:
void rotate(complex<double> &co)
{
// rotate it in place
}
// then just do something like this
rotate(co1);
rotate(co2);
rotate(co3);
rotate(co4);
更改矢量<复数<双>gt;到向量<reference_ wrapper<复数<双>gt>然后你就不需要循环后的部分了。代码的其余部分将保持不变。
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 为什么我的代码在输出中增加了93天
- 0-1背包代码中的错误.我的代码中有什么错误
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 在我的代码中,获得最大的Pair Wise产品C++和输出并不总是正确的
- 为什么我的C++代码中出现'Segmentation Fault: 11'行?
- 是否值得降低我的代码的可读性,以便在出现内存不足错误时提供异常安全性?
- 如何重写全局方法名称以在调用原始方法之前将我的代码推到前面
- 我的代码运行良好,但在游戏循环中中断
- 如何使用递归循环我的代码(当用户输入无效输入时,它会再次提示他们)?
- 我认为我的代码很好,但它在 cin a 之后停止并且没有进一步?
- 我的代码中的意外价值以及我如何修复它
- 为什么 rand 不在我的代码中生成随机数?
- 编写了一个C++代码来检查表达式是否具有平衡括号并且我的代码未运行.我已经卡了一天了
- 如何改进我的代码,使其不会因超时而终止?(黑客排名挑战)
- 无法找出我的代码中的内存泄漏
- 我不明白为什么我的代码不起作用并且需要更长的时间来运行
- 我正在尝试创建一个菜单,但我的代码一直在循环