gpt4 book ai didi

c++ - 带有 std::vectors 的图形?

转载 作者:行者123 更新时间:2023-11-28 04:07:40 24 4
gpt4 key购买 nike

我认为使用 vector 的一种很酷的方法可能是让一个 vector 类模板保存两个单独的 int 变量,用于 x/y 坐标以绘制图形。

例子:

std::vector<int, int> *name*;
// First int. being the x-intercept on a graph
// Second int. being the y-intercept on a graph

(我也明白我可以只制作每个偶数/奇数位置或两个单独的 vector 来对每个 x/y 坐标进行分类,但对我来说我只想看看这是否可行)

但是,在创建此 vector 类型之后,我遇到了一个问题,即分配 vector 中的哪个 int 将被写入或从中提取。谁能告诉我如何最好地selectstd::cout 两个 x/y 整数?

附言- 以这种方式使用 vector ,我的主要目标是将非常基本的图形输出到 Visual Studio 终端。同时能够通过“选择”和根据需要进行更改来更改单个 x/y 截距。这些坐标将通过 for/while 循环输出到终端。

另外,有人愿意列出不同容器的最佳 x/y 坐标的不同方法吗?

最佳答案

你的问题比较宽泛,换句话说就是要求有点高了。我会尽量给你一些建议,你可以从中找到你喜欢的东西。

A) 等距 x

如果您的 x值是等距的,即 0, 0.5, 1, 1.5那么就不需要存储它们,只需使用一个

std::vector<int> y;

如果编译时不知道变量个数,否则a

std::array<int,N> y;

B) 任意 x

有几个选项取决于您实际想要做什么。用于简单存储 (x,y) - 将它们配对并打印在屏幕上,它们都同样有效。

map

std::map<int,int> map_x_to_y = { { 1,1}, {2,4}, {3,9}};
// print on screen
for (const auto& xy : map_x_to_y) {
std::cout << xy.first << ":" xy.second;
}

成对 vector

std::vector<std::pair<int,int>> vector_x_and_y = { { 1,1}, {2,4}, {3,9}};

在屏幕上打印实际上与 map 相同. map 的优点是它的元素是有序的,而 vector 则不是这样。

C) 不使用任何容器

对于轻量级计算,您可以考虑不存储 (xy)对,但只需使用一个函数:

int fun(int x) { return x*x; }

TL;DR/更专注

vector 存储一种类型。你不能有 std::vector<int,int> .如果您查看 std::vector 的文档你会发现第二个模板参数是一个分配器(你可能有一段时间不需要关心它了)。如果你想将两个值作为一个元素存储在一个 vector 中,你要么必须使用 std::vector<std::pair<double,double>>或不同的容器。

附言

我用了std::pair在上面的例子中。但是,我确实认为尽可能命名事物并离开 std::pair 是一种很好的做法。对于我根本无法给出比 first 更好的名字的情况和 second .本着这种精神,您可以替换 std::pair在上面的例子中有一个

struct data_point {
int x;
int y;
};

关于c++ - 带有 std::vectors 的图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58439054/

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