diff --git a/internal/ceres/problem_impl.cc b/internal/ceres/problem_impl.cc
index 40458bf..0a6b446 100644
--- a/internal/ceres/problem_impl.cc
+++ b/internal/ceres/problem_impl.cc
@@ -284,7 +284,7 @@
     // Check for duplicate parameter blocks.
     std::vector<double*> sorted_parameter_blocks(
         parameter_blocks, parameter_blocks + num_parameter_blocks);
-    sort(sorted_parameter_blocks.begin(), sorted_parameter_blocks.end());
+    std::sort(sorted_parameter_blocks.begin(), sorted_parameter_blocks.end());
     const bool has_duplicate_items =
         (std::adjacent_find(sorted_parameter_blocks.begin(),
                             sorted_parameter_blocks.end()) !=
@@ -643,8 +643,9 @@
         program.parameter_blocks());
 
     std::vector<ParameterBlock*> excluded_parameter_blocks;
-    sort(all_parameter_blocks.begin(), all_parameter_blocks.end());
-    sort(included_parameter_blocks.begin(), included_parameter_blocks.end());
+    std::sort(all_parameter_blocks.begin(), all_parameter_blocks.end());
+    std::sort(included_parameter_blocks.begin(),
+              included_parameter_blocks.end());
     set_difference(all_parameter_blocks.begin(),
                    all_parameter_blocks.end(),
                    included_parameter_blocks.begin(),
diff --git a/internal/ceres/reorder_program.cc b/internal/ceres/reorder_program.cc
index b9ff7a3..44c4e46 100644
--- a/internal/ceres/reorder_program.cc
+++ b/internal/ceres/reorder_program.cc
@@ -286,9 +286,9 @@
       << "Congratulations, you found a Ceres bug! Please report this error "
       << "to the developers.";
 
-  CHECK(find(residual_blocks_per_e_block.begin(),
-             residual_blocks_per_e_block.end() - 1,
-             0) == residual_blocks_per_e_block.end() - 1)
+  CHECK(std::find(residual_blocks_per_e_block.begin(),
+                  residual_blocks_per_e_block.end() - 1,
+                  0) == residual_blocks_per_e_block.end() - 1)
       << "Congratulations, you found a Ceres bug! Please report this error "
       << "to the developers.";
 
diff --git a/internal/ceres/schur_complement_solver.cc b/internal/ceres/schur_complement_solver.cc
index 7c4b234..e113040 100644
--- a/internal/ceres/schur_complement_solver.cc
+++ b/internal/ceres/schur_complement_solver.cc
@@ -257,8 +257,9 @@
       }
     }
 
-    sort(f_blocks.begin(), f_blocks.end());
-    f_blocks.erase(unique(f_blocks.begin(), f_blocks.end()), f_blocks.end());
+    std::sort(f_blocks.begin(), f_blocks.end());
+    f_blocks.erase(std::unique(f_blocks.begin(), f_blocks.end()),
+                   f_blocks.end());
     for (int i = 0; i < f_blocks.size(); ++i) {
       for (int j = i + 1; j < f_blocks.size(); ++j) {
         block_pairs.emplace(f_blocks[i], f_blocks[j]);
diff --git a/internal/ceres/stl_util.h b/internal/ceres/stl_util.h
index c326be1..d206279 100644
--- a/internal/ceres/stl_util.h
+++ b/internal/ceres/stl_util.h
@@ -59,8 +59,8 @@
 template <class ForwardIterator>
 void STLDeleteUniqueContainerPointers(ForwardIterator begin,
                                       ForwardIterator end) {
-  sort(begin, end);
-  ForwardIterator new_end = unique(begin, end);
+  std::sort(begin, end);
+  ForwardIterator new_end = std::unique(begin, end);
   while (begin != new_end) {
     ForwardIterator temp = begin;
     ++begin;
diff --git a/internal/ceres/trust_region_minimizer.cc b/internal/ceres/trust_region_minimizer.cc
index 2e2b74c..d76f677 100644
--- a/internal/ceres/trust_region_minimizer.cc
+++ b/internal/ceres/trust_region_minimizer.cc
@@ -380,9 +380,9 @@
   iteration_summary_.step_is_valid = false;
   TrustRegionStrategy::PerSolveOptions per_solve_options;
   per_solve_options.eta = options_.eta;
-  if (find(options_.trust_region_minimizer_iterations_to_dump.begin(),
-           options_.trust_region_minimizer_iterations_to_dump.end(),
-           iteration_summary_.iteration) !=
+  if (std::find(options_.trust_region_minimizer_iterations_to_dump.begin(),
+                options_.trust_region_minimizer_iterations_to_dump.end(),
+                iteration_summary_.iteration) !=
       options_.trust_region_minimizer_iterations_to_dump.end()) {
     per_solve_options.dump_format_type =
         options_.trust_region_problem_dump_format_type;
