向量是如何变成矩阵的

How did a vector become a matrix?

本文关键字:何变成 向量      更新时间:2023-10-16

所以我在互联网上找到了这段代码,但因为我对C++不太熟悉。我发现很难理解:向量是如何突然变成矩阵的?

int main(){
int n;
string v[MAX];
cin >> n; 
for(int i=0;i<n;i++) 
 cin >> v[i];
for(int i=0;i<n-1;i++){
    int y1,y2;
    y1=v[i].size();
    y2=v[i+1].size();
    for(int j=0; j<y1 && j<y2 ;j++)
        if(v[i][j]!=v[i+1][j]){  // here <-
            int x1,x2;
            x1=(int) v[i][j]-'A';
            x2=(int) v[i+1][j] - 'A';
            m[x1][0]=true; 
            m[x2][0]=true;
            m[x1][x2+1]=true; 
            break;
        }
 }
string v[MAX];

std::string数组(大概-这是避免using namespace std;的原因之一。我怎么知道它是什么类型的string?)。

您可以使用[]:访问阵列的元素

int someInts[5];
someInts[3]=1000; // sets the 4th int (counting starts from 0)

您还可以使用[]:访问std::string中的字符

std::string name("chris");
std::cout << name[3]; // prints 'i'

因此,您可以使用两组[]:访问std::string数组中的字母

std::string names[10]; // 10 names
names[3] = "chris"; // set the 4th name
std::cout << names[3][1]; // prints 'h'
//                    ^ access letter in string
//                 ^ access string in array

下面是一个不言自明的示例

int main()
{
  std::string name;
  name = "test";
  for(int i = 0; i<4; i++)
      std::cout<<name[i]<<std::endl;
  std::cout << "Hello, " << name << "!n";
}

它将打印

t
e
s
t
Hello, test!

所以,一个字符串数组实际上是一个二维字符数组,你称之为矩阵。

string v[N]string的数组,string本身是chars的数组。

正如评论者所指出的,由于您给出的代码中既没有向量也没有矩阵,因此我将做出几个假设:

  • "向量"是指"数组"
  • 您认为双方括号运算符([][])表示一个矩阵

如果这两者都是真的,我可以解释你所看到的:

string[5] strings = { Some Strings... } 
//The first string in the array
string string1 = strings[0];
//The first letter of the first string
char char1 = string1[0];
//The above is the same as:
char char1Again = strings[0][0];

在上面的行中,第一个方括号运算符返回数组中的第一个字符串。然后将第二个方括号运算符应用于该字符串,返回该字符串的第一个字符。

这是因为数组和字符串(实际上是数组本身)都实现了方括号运算符来通过索引访问其内部元素。

从技术上讲,以一种复杂的方式,你可以称之为矩阵,但"2D字符数组"更合适。