使用stl交换堆栈c ++中的第一个和最后一个元素

时间:2018-06-25 16:40:21

标签: c++ stack

我创建了一个帐户,所以我可以在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");

}

1 个答案:

答案 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>与其他包含项一起编译),并且应该具有您期望的代码行为。