c++ - 向量未定义
问题描述
我已经添加了 bits/stdc+.h 和 vector 。仍然会出现这个错误。谁能告诉我为什么会这样。
#include <bits/stdc++.h>
#include<vector>
void rotate(int arr[], int n);
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
int a[n] , i;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
rotate(a, n);
for (i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
return 0;
}
// } Driver Code Ends
//User function Template for C++
void rotate(int arr[], int n)
{
vector<int> a;
a[0] = arr[n-1];
for(int i = 0 ; i<n-1 ;i++)
{
a.insert(a.back(), arr[i]);
}
for(int j : a)
cout<<j;
}
main.cpp:30:5: error: ‘vector’ was not declared in this scope
vector<int> a;
^~~~~~
解决方案
遵循这些:(已编辑)
- (解决您的问题)使用命名空间 std,因为这意味着如果编译器发现当前范围内未声明的内容,那么它将去检查 std。
- 不要混合 c 和 c++ 语法。使用 printf 或 cout。
另请查看对此答案的第一条评论,因为您应该了解有关“使用命名空间 std”和“cout/cin”的一些信息。
- 无需工作两次,您也可以一次声明和定义您的函数。
解决方案(但其他部分有错误)
#include <bits/stdc++.h>
using namespace std;
void rotate(int arr[], int n)
{
vector<int> a;
a[0] = arr[n - 1];
for (int i = 0 ; i < n - 1 ; i++)
{
a.insert(a.back(), arr[i]); // ITS YOUR SYNTAX, CONSIDER TO UPDATE IT
}
for (auto &it : a)
cout << it;
}
int main()
{
int t;
cin>>t;
while (t--)
{
int n;
cin>>t;
int a[n] , i;
for (i = 0; i < n; i++)
cin>>a[i];
rotate(a, n);
for (i = 0; i < n; i++)
cout<<a[i];
cout<<"\n";
}
return 0;
}
CHECK LINE NO 9 线,
看看它是否正确。 a.insert(a.back(), arr[i]); WRONG 你在那里做错了什么。检查此声明
错误:未在此范围内声明“向量”
通过使用命名空间解决
如果你喜欢这个答案。请考虑勾选这个答案。:)
推荐阅读
- php - Laravel phpUnit
- ios - swift didSelectAtIndexPath 没有被触发
- android - mvp中的presenter和mvvm中的view-model有什么区别
- c# - 在实体框架中连续删除和添加实体时出现异常
- python - PyQt5 中的 QObject、pyqtSignal
- python - Tensorflow - 在交互模式下使用估算器
- firebase - 后端模块中的 Firebase 管理员触发“所有 Firebase 库必须高于或低于 14.0.0
- javascript - 如何在不删除 JS 中的前一个的情况下向数组添加输入?
- python - TypeError:“int”类型的对象没有 len()?
- javascript - 只允许名字和姓氏中间有空格