我创建了一个帐户,所以我可以在STL中获得有关堆栈的帮助,我需要编写一个函数,该函数将堆栈作为参数并将第一个元素与最后一个元素交换,我在站点上搜索了一些帮助,发现了一个:“ https://stackoverflow.com/a/36188943/9990214”,我尝试了同样的事情,但是仍然出现此错误:“ int tmp [sz-1];”下的表达式必须具有带红线的常量值。 它会在出现问题之前一直给我错误,请提供任何帮助,请记住正在尝试使用STL编写函数。 ps:我尝试对回答此问题的人作评论以回复,但由于我需要50的声誉,所以不允许我这样做。
public static void main(String args[]) throws IOException, InterruptedException {
Authenticator.setDefault(new ProxyAuthenticator("myUserName@somemail.com", "mySecretPassword"));
System.setProperty("https.proxyHost", "VPNServerHostname");
System.setProperty("https.proxyPort", "VPNServerPort");
Document doc = Jsoup.connect("https://tools.keycdn.com/geo" )
.timeout(30000)
.userAgent("Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2")
.get();
String ip = doc.select("th:contains(IP) + td").text();
String isp = doc.select("th:contains(Hostname) + td").text();
String provider = doc.select("th:contains(Provider) + td").text();
String country = doc.select("th:contains(Country) + td").text();
System.out.println("IP: " + ip + "\nHostname: " + isp + "\nProvider: " + provider + "\nCountry: " + country + "\n############################################"+"\n");
}
答案 0 :(得分:1)
出现错误的原因是可变长度数组不是标准C ++的一部分。这对您对tmp
的定义很重要:
int tmp[sz-1], i=0; //sz is not known at compile-time, therefore, this is invalid code
某些编译器通过允许VLA来允许类似这样的代码,但不是标准的,您应该使用其他解决方案。通常,对于这样的任务,std::vector
是理想的选择:
std::vector<int> tmp(sz - 1);
int i = 0;
这应该可以编译(只要您#include<vector>
与其他包含项一起编译),并且应该具有您期望的代码行为。