diff --git a/include/tadah/mlip/st_descriptors_db.h b/include/tadah/mlip/st_descriptors_db.h
index 7f45999ec14d58f0fd3fb2d9c4dc045d873e32e3..6272db8c0b1dab60451dae98beaa6ec42c9d85a6 100644
--- a/include/tadah/mlip/st_descriptors_db.h
+++ b/include/tadah/mlip/st_descriptors_db.h
@@ -38,5 +38,11 @@ struct StDescriptorsDB {
   /** Add StDescriptors to DB */
   void add(const StDescriptors &st_d);
 
+  // Methods to enable range-based for loop
+  std::vector<StDescriptors>::iterator begin();
+  std::vector<StDescriptors>::iterator end();
+  std::vector<StDescriptors>::const_iterator begin() const;
+  std::vector<StDescriptors>::const_iterator end() const;
+
 };
 #endif
diff --git a/src/st_descriptors_db.cpp b/src/st_descriptors_db.cpp
index 21960ac48dd58b85e149d0a417917fa5f1b2e8cf..3dce74f8c5e21d70596c39a810406923ebbd990c 100644
--- a/src/st_descriptors_db.cpp
+++ b/src/st_descriptors_db.cpp
@@ -18,3 +18,18 @@ size_t StDescriptorsDB::size() const {
 void StDescriptorsDB::add(const StDescriptors &st_d) {
   st_descs.push_back(st_d);
 }
+std::vector<StDescriptors>::iterator StDescriptorsDB::begin() { 
+    return st_descs.begin(); 
+}
+
+std::vector<StDescriptors>::iterator StDescriptorsDB::end() { 
+    return st_descs.end(); 
+}
+
+std::vector<StDescriptors>::const_iterator StDescriptorsDB::begin() const { 
+    return st_descs.cbegin(); 
+}
+
+std::vector<StDescriptors>::const_iterator StDescriptorsDB::end() const { 
+    return st_descs.cend(); 
+}