vector <int>中的std :: sort返回0而不是值

时间:2019-03-08 16:19:18

标签: c++

我正在HackerRank中做一个简单的练习,将一些整型数向量化并打印在屏幕上。

int main() {
    int sz;
    std::cin >> sz; // 5 in this case

    std::vector<int> v(sz);
    for(auto elem : v){
        std::cin >> elem;
        std::cout << elem << ' '; //1 6 10 8 4
    }
    std::cout << std::endl;

    std::sort(v.begin(), v.end());

    for (auto elem : v) {
        std::cout << elem << ' '; //0 0 0 0 0 
    }
    return 0;
}

输出为:

1 6 10 8 4 
0 0 0 0 0 

std :: sort还有其他需要考虑的因素吗? HackerRank的编译器有问题吗?

1 个答案:

答案 0 :(得分:6)

elem是引导程序中项目的副本!将其更改为参考,以便在读取值时实际上将修改矢量:

for(auto &elem : v){
//      ^^^
    std::cin >> elem;
    std::cout << elem << ' '; //1 6 10 8 4
}

在此处查看其工作原理:ideone