10 #include "../Util/ArrayOfString.hpp"
11 #include "../Util/Exception.hpp"
13 std::ostream&
NOMAD::operator<<(std::ostream& out,
const NOMAD::ArrayOfString& arrayOfString)
15 out << arrayOfString.display();
24 NOMAD::ArrayOfString::ArrayOfString(
size_t n,
const std::string& initString)
27 for (
size_t i = 0; i < n; i++)
29 _array.push_back(initString);
34 NOMAD::ArrayOfString::ArrayOfString(
const std::string & inputString,
35 const std::string & separators)
38 _array = splitString(inputString, separators);
45 NOMAD::ArrayOfString::~ArrayOfString()
53 const std::string& NOMAD::ArrayOfString::operator[](
size_t index)
const
55 if ( index >= _array.size())
57 std::ostringstream oss;
58 oss <<
"ArrayOfString: index = " << index <<
" is out of bounds [0, " << _array.size()-1 <<
"]";
59 throw NOMAD::Exception(__FILE__, __LINE__, oss.str());
72 void NOMAD::ArrayOfString::replace(
const size_t index,
const std::string& s)
74 if ( index >= _array.size())
76 std::ostringstream oss;
77 oss <<
"ArrayOfString: index = " << index <<
" is out of bounds [0, " << _array.size()-1 <<
"]";
78 throw NOMAD::Exception(__FILE__, __LINE__, oss.str());
88 bool NOMAD::ArrayOfString::erase(
const size_t index)
91 std::vector<std::string>::const_iterator it;
93 for (it = _array.begin(); it != _array.end(); ++it)
109 int NOMAD::ArrayOfString::find(
const std::string& s)
const
113 for (
size_t i = 0; i < _array.size(); i++)
131 return (_array == array._array);
138 std::string NOMAD::ArrayOfString::display()
const
145 for (
size_t i = 0; i < size(); i++)
163 std::vector<std::string>
const
164 NOMAD::ArrayOfString::splitString(
const std::string & inputString,
165 const std::string & separators)
167 std::vector<std::string> array;
169 if (inputString.size() == 0)
174 size_t splitIndex = 0, index1 = 0, length;
181 while (splitIndex != std::string::npos)
184 index1 = inputString.find_first_not_of(separators, index1);
185 if (index1 == std::string::npos)
189 splitIndex = inputString.find_first_of(separators, index1+1);
190 if (splitIndex == std::string::npos)
192 length = inputString.size() - index1;
196 length = splitIndex - index1;
199 std::string si = inputString.substr(index1, length);
202 index1 = splitIndex + 1;
bool operator==(const Double &d1, const Double &d2)
Comparison operator ==.
std::ostream & operator<<(std::ostream &os, const Algorithm &algo)
Operator to write parameters used for hot restart.