一、C++中".","::",":","->"的意义及区别:
1、"A.B"则A为对象或者结构体;
2、"A->B"则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针;
3、"::"是作用域运算符,A::B表示作用域A中的名称B,A可以是名字空间、类、结构;
4、":"一般用来表示继承;
二、C++中二维vector赋值操作:
1、直接赋值:
vector<vector<int>> mat =
{ {3, 0, 1, 4, 2},
{5, 6, 3, 2, 1 },
{1, 2, 0, 1, 5},
{4, 1, 0, 1, 7},
{1, 0, 3, 0, 5} };
2、创建数组后再用循环遍历赋值:
vector< vector<int>> arr(i, j); // i行j列 二维数组
for(i = 0; i < array.size(); i++)
{
for (j = 0; j < array[0].size();j++)
{
array[i][j] = i*j;
}
}
3、利用push_back进行赋值:
vector< vector<int>> arr(i, j); // i行j列 二维数组
for(i = 0; i < array.size(); i++)
{
for (j = 0; j < array[0].size();j++)
{
array[i][j].pushback(i*j);
}
}
4、拷贝赋值:
vector<vector<int>> arr1;
vector<int> arr2;
arr2.assign(n, m);//将n个m给数组arr2赋值
for (int i = 0; i < 5; i++) {
arr1.push_back(arr2);
}
二、C++中二维vector访问操作:
1. 迭代器iterator访问元素:
for (vector<vector<int>>::iterator row = arr1.begin(); row != arr1.end(); row++) {
for (vector<int>::iterator it = (*row).begin(); it != (*row).end(); it++){
cout << *it << " ";
}
cout << endl;
}
2. []访问元素:
vector<vector<int> >num1;
vector<int> num2;
{
num2.push_back(1);
num2.push_back(2);
num2.push_back(3);
num2.push_back(4);
}
num1.push_back(num2);
num1.push_back(num2);
num1.push_back(num2);
//访问一维数组num2的值:
for(int i = 0; i< num2.size();i++)
{
cout << num2[i] << endl;
}
//访问二维数组num1的值:
for(int i = 0; i< num1.size();i++){
for(int j = 0; j< num2.size();j++)
{
cout << num1[i][j] << endl;
}
}
/*PS:
在二维矩阵最后位置添加一行元素:num1.push_back(vector<int> num2);
在某一行末尾添加一个元素:num1[i].push_back(i);
每行的数目可以不一样,每列的数目也可以不一样
*/
PS: at()只能访问一维数组的元素:
//访问一维数组num2的值:
for(int i = 0; i< num2.size();i++)
{
cout << num2.at(i) << endl;
}
一维vector动态数组知识点:
(1)vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。
(2)vector<int> a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1
(3)vector<int> a(b); //用b向量来创建a向量,整体复制性赋值
(4)vector<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素
(5)int b[7]={1,2,3,4,5,9,8};vector<int> a(b,b+7); //从数组中获得初值