C+中的坐标系+; 我想用C++来制作一个坐标系。我将获得一些(x,y)坐标从用户和使用它,我需要使一个坐标系(更多的地图)的风格。我怎样才能做到这一点?它需要如下图所示。我应该使用2D数组还是向量,以及如何使循环以不同的方式进行标记

C+中的坐标系+; 我想用C++来制作一个坐标系。我将获得一些(x,y)坐标从用户和使用它,我需要使一个坐标系(更多的地图)的风格。我怎样才能做到这一点?它需要如下图所示。我应该使用2D数组还是向量,以及如何使循环以不同的方式进行标记,c++,arrays,vector,c++11,stdvector,C++,Arrays,Vector,C++11,Stdvector,(2,0)(4,3)(7,8) 需要看起来像 **1************ *************** *************** *************** ***1*********** *************** *************** ********1****** 这是到目前为止我得到的代码,但问题是我不能在其中标记多个坐标。我只是用了2个for循环来做 for(int i = -6; i < 7; i++) if (i &l

(2,0)(4,3)(7,8) 需要看起来像

 **1************
 ***************
 ***************
 ***************
 ***1***********
 ***************
 ***************
 ********1******
这是到目前为止我得到的代码,但问题是我不能在其中标记多个坐标。我只是用了2个for循环来做

for(int i = -6; i < 7; i++) 
    if (i < 0) 
        cout<<" "<<i; 
    else 
        cout<<"  "<<i; 
cout<<endl; 

for(int i = 0; i < 15; i++) 
    { 
        cout<<(char)(i + 49); 
        for(int j = -6; j < 7; j++) 
        if(i == y - 1 && j == x) 
            cout<<" x "; 
        else 
            cout<<" . "; 

        cout<<(char)(i + 49)<<endl; 
    } 
for(int i=-6;i<7;i++)
if(i<0)

cout我建议您使用
vector
vector
甚至
vector
,具体取决于您打算在单元格中存储什么。如果单元格是单个字符,那么第一个选项可能是最好的。 之后,创建地图非常简单:

int n,m;
cin >> n >> m;
vector<string> a(n, string(m, '*');
intn,m;
cin>>n>>m;
向量a(n,字符串(m,'*');
我不确定上面代码中的“.”和“x”是什么,但我只想让您输入几对坐标,并用“1”替换
向量中的相应元素


希望这有帮助。

我建议您使用
vector
vector
甚至
vector
,这取决于您打算在单元格中存储什么。如果单元格是单个字符,那么第一个选项可能是最好的。 之后,创建地图非常简单:

int n,m;
cin >> n >> m;
vector<string> a(n, string(m, '*');
intn,m;
cin>>n>>m;
向量a(n,字符串(m,'*');
我不确定上面代码中的“.”和“x”是什么,但我只想让您输入几对坐标,并用“1”替换
向量中的相应元素


希望这有帮助。

要回答您的其他问题,您可以使用一个循环进行更改,另一个循环显示您的结果。 根据izomorphius的建议,如果您使用一个列表来存储坐标对,则看起来是这样的:

vector<string> matrix ;
list<pair> PairList ;

for (list<pair>::const_iterator it = PairList.beguin(); i < PairList.end(); it++) {
    matrix[ (*it).second ][ (*it).first ] = "." ;
}
向量矩阵;
列表成对列表;
对于(list::const_迭代器it=PairList.beguin();i
并显示结果:

for (int i = 0; i < matrix.size; i++) {
    cout << matrix[i] << endl ;
}
for(int i=0;icout要回答您的另一个问题,您可以使用一个循环进行更改,另一个循环显示您的结果。
根据izomorphius的建议,如果您使用一个列表来存储坐标对,则看起来是这样的:

vector<string> matrix ;
list<pair> PairList ;

for (list<pair>::const_iterator it = PairList.beguin(); i < PairList.end(); it++) {
    matrix[ (*it).second ][ (*it).first ] = "." ;
}
向量矩阵;
列表成对列表;
对于(list::const_迭代器it=PairList.beguin();i
并显示结果:

for (int i = 0; i < matrix.size; i++) {
    cout << matrix[i] << endl ;
}
for(int i=0;icout我建议使用
std::set
std::pair
而不是
std::vector
——不需要将整个网格保存在内存中,我们只需要点


我建议使用
std::pair
std::set
而不是
std::vector
——不需要将整个网格保存在内存中,我们只需要点


向量ftw。标记元素imim.+ 1,btw,但你的权利,为了倾倒到控制台,它很难打败一大堆字符串= p加速C++(KoeNig和MOO),这里也使用字符串方法的向量。它允许<代码> [y] [x]
语法。这可能与直觉相反。+1,这可能是op阻力最小的路径。但值得注意的是,根据“兴趣点”相对于贴图大小的稀疏程度,以及如果贴图需要动态增长或不需要动态增长,定义一个CoordType包装std::pair,并使用适当的比较运算符nd将其用作地图/集合中的键(类似于Pawel的答案)IMO,网格图的尺寸是否在其生命周期内是恒定的,是一个关键的决定因素,在哪种方法之间更好地工作。矢量FTW。使元素标记直观的imHO。+ 1,BTW.但是你的权利,对于倾倒到控制台很难打败一大堆字符串= p加速C++。(Koenig&Moo)这里也使用字符串向量方法。它允许
a[y][x]
语法。这可能与直觉相反。+1,这可能是op阻力最小的路径。但值得注意的是,根据“兴趣点”相对于贴图大小的稀疏程度,以及如果贴图需要动态增长或不需要动态增长,定义一个CoordType包装std::pair,并使用适当的比较运算符nd将其用作地图/集合中的键(类似于Pawel的答案)可能是一个更自然的实现。在我看来,网格图的尺寸是否在其生命周期内保持不变是决定哪种方法效果更好的关键因素。Whaaat?哦,你的意思是一个容器,它可以容纳魔法点,而不是整个网格。我明白了
map
map
是一个糟糕的想法,因为se这只会比向量大得多,慢得多。绝对不是更好。设置特殊点是一个好主意。较慢-是的,较大-可能,但我怀疑。只有当魔法点的数量显著(比如网格上整个点的10%-20%)时才有可能使用
vector
来保存整个网格可能比225B多一点-我认为15个点的
map
仍然比这个小。再次检查,在您的演示中,您将每个点都放在地图的地图中。在哪里?我放了3个点,所以将创建3个带有1个元素地图的地图。什么?哦,您是指一个保存神奇的po的容器整数而不是保持整个网格。我明白了
map
map
是一个糟糕的想法,因为它会比向量大得多,慢得多。这绝对不是更好的。通过设置特殊点是一个好主意。慢一点-是的,大一点-可能,但我怀疑。只有当num误码率