【发布时间】:2021-09-04 10:05:42
【问题描述】:
我是编程初学者,在实现向量时发现了一些新东西。 我在向量初始化中的第一个代码不起作用,但第二个代码运行良好。请解释一下背后的原因。
代码 1:
#include <iostream>
using namespace std;
#include <vector>
vector<long long int>v;
v.reserve(2);
v.push_back(1);
v.push_back(2);
int main(){
cout<<v[0]<<" "<<v[1]<<endl;
}
它输出错误:'v' 没有命名类型
代码 2:
#include <iostream>
using namespace std;
#include <vector>
vector<long long int>v;
int main(){
v.reserve(2);
v.push_back(1);
v.push_back(2);
cout<<v[0]<<" "<<v[1]<<endl;
}
它工作得很好,我首先关注它,因为它在我们处理一个中型程序时很有用,它有许多在 main 之外定义的函数。例如,在下面的代码中 push_back 工作正常,但我无法在前面定义大小,但我想这样做,因为我的向量有 100000 的大数据。
解释我的意思我的代码的一部分如下所示;
#include <iostream>
using namespace std;
#include <vector>
vector<unsigned long long int>v_val;
void MergeSort(long long arr[],long long n){
long long count=0;
if(n==1)
return;
long long U[n/2];long long V[n-n/2];
for(long long i=0;i<n/2;i++){
U[i]=arr[i];
}
for(long long i=0;i<n-n/2;i++){
V[i]=arr[i+n/2];
}
MergeSort(U,n/2);
MergeSort(V,n-n/2);
count+=merge(U,n/2,V,n-n/2,arr,count);
v_val.push_back(count);
}
int main(){
long long test_count=0;
ifstream file_num("pr_as_2.txt");
long long arr_num[100000];
for(long long i=0;i<100000;i++){
file_num>>arr_num[i];
}
unsigned long long int sum_val=0;
MergeSort(arr_num,70000);
for(size_t i=0;i<v_val.size();i++){
sum_val+=v_val[i];
}
cout<<sum_val;
}
【问题讨论】:
-
您不能在函数之外编写代码。另外,请每个帖子一个问题。
-
这能回答你的问题吗? Code outside functions
-
我通常建议避免使用全局变量。