the*_*ids 42 c++ arrays vector
我是C++ STL的新手,我无法理解图形表示.
vector<int> adj[N];
Run Code Online (Sandbox Code Playgroud)
那么这会创建一个类型向量数组,还是会创建一个数组向量?BFS代码似乎遍历在adj [i]的每个实例处出现的值列表,因此它看起来像一个向量数组.创建向量的语法是:
vector<int> F;
Run Code Online (Sandbox Code Playgroud)
这将有效地创建单维向量F.
有什么区别
vector< vector<int> > N;
Run Code Online (Sandbox Code Playgroud)
和
vector<int> F[N]
Run Code Online (Sandbox Code Playgroud)
awe*_*oon 46
那么this(
vector<int> adj[N];)创建一个类型为vector的数组还是创建一个数组向量?
它创建了矢量数组
有什么区别
Run Code Online (Sandbox Code Playgroud)vector< vector<int> > N;和
Run Code Online (Sandbox Code Playgroud)vector<int> F[N]
在第一种情况下,您将创建动态数组的动态数组(向量矢量).每个向量的大小可以在运行时更改,所有对象都将在堆上分配.
在第二种情况下,您将创建一个固定大小的向量数组.你必须N在编译时定义,并且所有向量都将放在堆栈上†,但是,每个向量将在堆上分配元素.
我总是喜欢矢量情况下的矢量(或矩阵,如果你可以使用第三方库),或std::array的std::arrayS IN编译时尺寸的情况下.
我是C++ STL的新手,我无法理解图形表示.
您也可以将图形表示为a std::unordered_map<vertex_type,std::unordered_set<vertex_type>>,其中vertex_type是顶点的类型(int在您的情况下).当边数不是很大时,可以使用这种方法来减少内存使用.
†:准确地说 - 并不总是在堆栈上 - 它可能是堆上复杂对象的一部分.此外,C++标准没有定义堆栈或堆的任何要求,它仅提供存储持续时间的要求,例如自动,静态,线程或动态.
Che*_*ide 18
简答:
这是一系列vector <int>的.
长答案:
阅读声明如
vector<int> adj[N];
Run Code Online (Sandbox Code Playgroud)
编译器使用称为"螺旋 - "或"顺时针规则"的方法来解释它的含义.螺旋规则背后的想法是你从变量名开始,然后以顺时针螺旋向外移动,以便找出它是什么类型的变量.例如:
char* str [10];
Run Code Online (Sandbox Code Playgroud)
可以解释如下:
____
| |
char* str [10];
|_________|
Run Code Online (Sandbox Code Playgroud)
制作str一个10 char*秒的数组.
因此,vector<int> adj[N];是一个向量数组而不是数组向量
实践完美:
1:什么int * foo [ ];意思?
回答:
"foo"是指向整数的指针数组
2:什么int * (*foo [ ] )();意思?
回答:
"foo"是指向返回指向整数的指针的函数的指针数组
3:什么int * (*(*foo [ ] )())();意思?
回答:
"foo"是一个指向函数的指针数组,返回指向函数的指针,返回指向整数的指针
小智 8
vector<int> arr[N];
Run Code Online (Sandbox Code Playgroud)
它显示一个向量数组,每个数组[i]都有一个存储在其中的向量,可以遍历许多值.它就像一个链接列表数组,其中磁头只存储在array [i]位置.
vector<vector<int> > N vs vector<int> F[N]
Run Code Online (Sandbox Code Playgroud)
2D矢量和矢量数组之间的区别在于2D矢量可以跨越大小,而矢量数组的尺寸固定为数组大小.
在引擎盖下,矢量仍然使用数组,它是特定于实现的,但可以安全地认为:
vector<int>
Run Code Online (Sandbox Code Playgroud)
在内部创建一个int [].什么向量给你的是它从你那里抽象的部分,如果你想重新调整大小,你不必手动重新分配等,它会为你做(当然还有更多).当你这样做:vector<vector<int>>你将创建一个向量矢量,意味着一个2D矩阵.您可以根据需要嵌套它.Vector接受类型T并分配该类型的数组.因此,如果您将向量作为类型T传递,它将有效地执行您在第一行中所执行的操作,即数组vector<int>.希望它有意义