所以我在互联网上找到了这个代码,但因为我不熟悉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;
}
}
答案 0 :(得分:4)
string v[MAX];
是std::string
的数组(大概 - 这是avoid using namespace std;
的一个原因。我怎么知道它是什么类型的string
?)。
您可以使用[]
访问数组元素:
int someInts[5];
someInts[3]=1000; // sets the 4th int (counting starts from 0)
您还可以访问std::string
with []
中的字符:
std::string name("chris");
std::cout << name[3]; // prints 'i'
因此,您可以使用两组std::string
访问[]
s数组中的字母:
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
答案 1 :(得分:1)
这是一个不言自明的例子
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!
因此,字符串数组实际上是一个2D字符数组,您称之为矩阵。
答案 2 :(得分:0)
string v[N]
是string
的数组,string
本身是chars
的数组。
答案 3 :(得分:0)
正如评论员所指出的那样,你给出的代码中既没有向量也没有矩阵,我会做出几个假设:
[][]
)表示矩阵。 如果这些都是真的,我可以解释你所看到的:
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字符数组”会更合适。