wordpress适合做大型网站吗/互联网优化是什么意思
文章目录
- 0 背景
- 1 删除多维数组
- 1.1 法一 :遍历清空
- 1.2 法二:fill
- 1.3 法三:memset
- 1.4 测试代码
- 2 删除多维向量
0 背景
之前,经常操作的都是一维的数组或者向量,但是实际项目里却有多维数组或者向量的操作,因此初始化清空操作是必须的,网上查阅了一些资料加上自己的实践终于实现了清空操作。
1 删除多维数组
以三维数组为例:double A[30][4][100];
清空操作:
1.1 法一 :遍历清空
for(int i = 0;i < 30;i++){for(int j = 0;j < 4;j++){for(int k = 1;k < 100;k++){A[i][j][k] = 0.0;}}}
1.2 法二:fill
头文件:#include<algorithm>
std::fill(A[0][0], A[0][0] + 30*4*100, 0.0);
1.3 法三:memset
头文件:#include<string>
memset(A, 0, sizeof (A));
推荐,因为效率高,但是有些类型不能使用如字符串类型string。
1.4 测试代码
double A[30][4][100];for(int i = 0;i < 30;i++){for(int j = 0;j < 4;j++){for(int k = 1;k < 100;k++){A[i][j][k] = 0.9;}}}//清空
// for(int i = 0;i < 30;i++){
// for(int j = 0;j < 4;j++){
// for(int k = 1;k < 100;k++){
// A[i][j][k] = 0.0;
// }
// }
// }//memset(A, 0, sizeof (A));std::fill(A[0][0], A[0][0] + 30*4*100, 0.0);//打印for(int i = 0;i < 30;i++){for(int j = 0;j < 4;j++){for(int k = 1;k < 100;k++){printf("%f\n", A[i][j][k]);}}}
2 删除多维向量
以二维向量为例:std::vector<std::pair<int, int>> A[10][100];
for(int i = 0;i < 10;i++){for(int j = 0;j < 100;j++){for(std::vector<std::pair<int,int>>::iterator k = A[i][j].begin(); k != A[i][j].end();){k = A[i][j].erase(k);}}}
测试代码:
std::vector<std::pair<int, int>> A[10][100];for(int i = 0;i < 100;i++){std::pair<int, int> b;b.first = 1;b.second = 1;A[0][i].push_back(b);A[0][i].push_back(b);}for(int i = 0;i < 100;i++){std::pair<int, int> b;b.first = 2;b.second = 2;A[1][i].push_back(b);A[1][i].push_back(b);A[1][i].push_back(b);A[1][i].push_back(b);}//输出清空前的位数for(int i = 0;i < 10;i++){for(int j = 0;j< 100;j++){std::cout<<"###前$$$i:"<<i<<" j:"<<j<<"---"<<A[i][j].size()<<" ";}std::cout<<std::endl;}for(int i = 0;i < 10;i++){for(int j = 0;j < 100;j++){for(std::vector<std::pair<int,int>>::iterator k = A[i][j].begin(); k != A[i][j].end();){k = A[i][j].erase(k);}}}//测试清空后的位置for(int i = 0;i < 10;i++){for(int j = 0;j< 100;j++){std::cout<<"@@@后---i:"<<i<<" j:"<<j<<"---"<<A[i][j].size()<<" ";}std::cout<<std::endl;}