首页 > 解决方案 > 向量中的 std::sort返回 0 而不是值

问题描述

我在 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 的编译器有问题吗?

标签: c++

解决方案


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

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

在这里看到它的工作:ideone


推荐阅读