向量是如何变成矩阵的
How did a vector become a matrix?
所以我在互联网上找到了这段代码,但因为我对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字符数组"更合适。
相关文章:
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何通过派生类函数更改基类中的向量
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 变量没有改变?通过向量的函数调用
- 迭代时从向量和内存中删除对象
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 计算排序向量的向量中唯一值的计数
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 矩阵向量乘法(cublasDgemv)返回零
- c_str() 结果从向量<string>变成垃圾与 libc++
- 我怎么能把一个有点的向量变成一个有值的向量呢
- 向量是如何变成矩阵的