首页 > 解决方案 > 为什么以及何时我们可以在 C++ 中省略 std 关键字?

问题描述

这两个代码:

#include <algorithm>
#include <iostream>
#include <iterator>
#include <utility>
#include <vector>

int main() {
  std::vector<int> v;

  std::exchange(v, {1, 2, 3, 4, 5});

  copy(cbegin(v), cend(v) - 1, std::ostream_iterator<int>(std::cout, ", "));
  std::cout << *rbegin(v) << "\n\n";

  return 0;
}

这个代码:

#include <algorithm>
#include <iostream>
#include <iterator>
#include <utility>
#include <vector>

int main() {
  std::vector<int> v;

  std::exchange(v, {1, 2, 3, 4, 5});

  std::copy(std::cbegin(v), std::cend(v) - 1, std::ostream_iterator<int>(std::cout, ", "));
  std::cout << *std::rbegin(v) << "\n\n";

  return 0;
}

可以成功编译(在 C++14 和 C++17 中)并完成相同的工作。但我想知道为什么我可以省略std::以及在什么情况下?

标签: c++stlc++14argument-dependent-lookup

解决方案


推荐阅读