赞
踩
协助老师设计算法的时候,利用数组作为预存储没能很好的处理数据量的问题,存在部分比较大的包,无法正常运行;
主要是二维数组开辟的空间小且没能利用好,然后改成了一维结构体数组,发现占用的空间更大;
完整的测试用例
- #pragma comment(linker, "/STACK:102400000,102400000")
- #include<iostream>
- #include<string>
- #include<algorithm>
- #include<vector>
- using namespace std;
- int num=0;
-
- void display()
- {
- cout<<num<<endl;
- }
-
- struct MyNode{
- int node1;
- int node2;
- };
- vector<MyNode> mynode1;
-
-
- int test(){
- for(int i=0;i<2;i++)
- {
- cout<<"start"<<endl;
- cout<<mynode1[i].node1<<endl;
- cout<<mynode1[i].node2<<endl;
- }
- }
-
- void ceshi(vector<MyNode> mynode)
- {
- cout<<"mynode"<<" "<<mynode[0].node1<<endl;
- cout<<"mynode"<<" "<<mynode[0].node2<<endl;
- if(mynode[0].node1==1)
- {
- cout<<"one"<<endl;
- }
- cout<<"尝试赋值"<<endl;
- cout<<"mynode[1]= "<<mynode[1].node1<<endl;
- cout<<"mynode[1].node= "<<mynode[1].node2<<endl;
-
- for(int i=0;i<2;i++)
- {
- cout<<mynode[i].node1<<endl;
- cout<<mynode[i].node2<<endl;
- }
- cout<<"start"<<endl;
- int test();
- }
-
-
-
- int main()
- {
- //一维数组的话我的电脑大概可以开50w
- int a[500000];
- cout<<sizeof(a)<<endl;
- //二维数组
- int b[210000][2] ;
- //cout<<sizeof(b);
- num=100;
- display();
- MyNode temp;
- temp.node1=1;
- temp.node2=2;
- mynode1.push_back(temp);
- temp.node1=3;
- temp.node2=4;
- mynode1.push_back(temp);
- ceshi(mynode1);
- return 0;
- }
-
学习前,做的上面的测试,便于后面的实验的展开。
首先,这两天一直在学习容器的使用,查阅了一些学习资料这里做一下整理:
https://blog.csdn.net/u014465639/article/details/70241850
一下附上测试用例,我们看的出只有传值才回改变结果
- void ceshi(vector<MyNode> &mynode)
- {
- cout<<"mynode"<<" "<<mynode[0].node1<<endl;
- cout<<"mynode"<<" "<<mynode[0].node2<<endl;
- if(mynode[0].node1==1)
- {
- cout<<"one"<<endl;
- }
- cout<<"尝试赋值"<<endl;
- cout<<"mynode[1]= "<<mynode[1].node1<<endl;
- cout<<"mynode[1].node= "<<mynode[1].node2<<endl;
-
- for(int i=0;i<2;i++)
- {
- cout<<mynode[i].node1<<endl;
- cout<<mynode[i].node2<<endl;
- }
- cout<<"start"<<endl;
- int test();
- }
-
- void ceshi(vector<MyNode> mynode)
- {
- cout<<"mynode"<<" "<<mynode[0].node1<<endl;
- cout<<"mynode"<<" "<<mynode[0].node2<<endl;
- if(mynode[0].node1==1)
- {
- cout<<"one"<<endl;
- }
- cout<<"尝试赋值"<<endl;
- cout<<"mynode[1]= "<<mynode[1].node1<<endl;
- cout<<"mynode[1].node= "<<mynode[1].node2<<endl;
-
- for(int i=0;i<2;i++)
- {
- cout<<mynode[i].node1<<endl;
- cout<<mynode[i].node2<<endl;
- }
- cout<<"start"<<endl;
- int test();
- }
默认初始化为0,
- cout<<"mynode"<<" "<<mynode[0].node1<<endl;
- cout<<"mynode"<<" "<<mynode[0].node2<<endl;
我们通过push_back()为其进行赋值
- MyNode temp;
- temp.node1=1;
- temp.node2=2;
- mynode1.push_back(temp);
在使用的时候要注意容器的实际大小,我们通常是先初始化然后再使用的
- vector <int> communityA(sizeOfArray,0);
- vector <int> communityB(sizeOfArray,0);
结构体容器的初始化
- MyNode temp1;
- temp1.node1=0;
- temp1.node2=0;
- vector<MyNode> commDegreeNodeAfterRemove(sizeOfArray,temp1);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。