所以我测试了数组,我可以通过 cin 手动填充数组。然而,当我尝试通过从数组中获取一个值以在 switch/case 系统中使用它来测试连接时,我一次又一次地收到错误,指向我想要提取 a 的 n-1 索引的行n 长填充数组。有人知道如何解决这个问题吗?我对 C++ 还很陌生。
#include <iostream>
#include <cstdlib>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n = 0;
std::cout << "Enter your array size: ";
std::cin >> n;
int array [n];
std::cout << "Input the Elements: \n";
for(int i=0; i<n; i++)
{
std::cout << " ";
std::cin >> array[i];
}
int ar_element = std::get<n-1>(array);
switch (ar_element)
{
case 1:
std::cout << "Hello World";
break;
case 2:
std::cout << "Hello not world";
break;
}
}
显然这个程序根本没有任何目的,我只是想在用户输入数组之后得到不同的基于 if 的答案之间创建一个连接 - 无论这对 ^^
有用吗我希望能得到 n 长数组的 n-1 个元素,以便在 switch 语句中使用它
这应该是您的代码的工作版本:
#include <iostream>
int main(void)
{
int n;
std::cout << "Enter your array size: ";
std::cin >> n;
int* array = new int[n];
std::cout << "Input the Elements: \n";
for(int i=0; i<n; i++)
std::cin >> array[i];
int ar_element = array[n-1];
switch (ar_element)
{
case 1:
std::cout << "Hello World";
break;
case 2:
std::cout << "Hello not world";
break;
}
delete[] array;
return 0;
}
这是错误/错误/评论的列表:
int array [n];
:C++ 标准(不是 C)不允许您使用非常量表达式来表示数组的大小。这里 n
是一个变量,它的值只有在运行时才知道。您有两个选择:使数组动态分配(使用 new[]
和 delete[]
,就像在我的代码中一样),或者以最大长度分配堆栈,并且仅使用前 n
元素(声明为 int array[MAX_N];
,无需删除);int ar_element = std::get<n-1>(array);
:为了获取 C 数组的元素,可以使用方括号 (array[n-1]
)。同样在 C++ 中,当您有 class_or_function<something>
形式的表达式时,something
必须是编译时已知的表达式(并且 n-1
在运行时已知)。 std::get
用于获取 std::tuple
的元素(参见 docs);return 0;
:尽管 main
函数是一个特殊函数,但最好的做法是显式编写 return
(正如您声明的 main
返回 int
,而不是 void
);using namespace std;
:这行代码用于写cin
、cout
等,而不是std::cin
、std::cout
、...。在你的情况下,你没有使用它,所以它没有用。一般来说,正如 @Jesper Juhl 在评论中提到的, using namespace std;
被认为是不好的做法(请参阅他提供的链接:为什么“使用命名空间 std;”被认为是不好的做法?);#include
。