Ich bin neu in C++. Ich habe einen B + Baum implementiert und es funktioniert gut auf Macbook (mit CLion), aber wenn ich es auf einem Ubuntu-Server ausführe gibt es den Kompilierungsfehler unten. Kann mir bitte jemand helfen?Fehler: keine übereinstimmende Funktion für Aufruf C++
error: no matching function for call to
‘std::vector<std::__cxx11::basic_string<char>
>::vector(__gnu_cxx::__normal_iterator<const
std::__cxx11::basic_string<char>*,
std::vector<std::__cxx11::basic_string<char> > >,
std::vector<std::__cxx11::basic_string<char> >::iterator)’
Ergebnis g ++ -v auf Mac:
Konfiguriert mit: prefix =/Library/Developer/CommandLineTools/usr --with-Gxx-include-dir =/usr/include/C++/4.2.1 von Apple LLVM Version 9.0.0 (Klirren-900.0.38) Ziel: x86_64-Apfel-darwin16.7.0 Thread-Modell: Posix InstalledDir:/Library/Developer/CommandLineTools/usr/bin
Ergebnis von g ++ -v auf dem Ubuntu-Server:
gcc Version 5.4.0 20.160.609 (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.5)
Code-Snippet, wo Fehler ausgelöst:
std::pair<InternalNode *, Node *> split(int order) {
std::vector<float>::const_iterator old_dn_keys_end = keys.begin() + ceil(float(order)/2) - 2;
std::vector<std::string>::const_iterator old_dn_values_end = values.begin() + ceil(float(order)/2) - 2;
new_dn->keys = std::vector<float>(old_dn_keys_end + 1, keys.end());
//**--- error here ---**
new_dn->values = std::vector<std::string>(old_dn_values_end + 1,
values.end());
//rest of the code...
}