#include <vector> passe pas
Bonjour,
la compile du fichier recurs.cpp ne passe pas:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| In file included from /usr/include/c++/11/vector:66,
from recurs.cpp:3:
/usr/include/c++/11/bits/stl_uninitialized.h:138:72: error: static assertion failed: result type must be constructible from value type of input range
138 | static_assert(is_constructible<_ValueType2, decltype(*__first)>::value,
/usr/include/c++/11/bits/stl_uninitialized.h:138:72: note: ‘std::integral_constant<bool, false>::value’ evaluates to false
In file included from /usr/include/c++/11/bits/char_traits.h:39,
from /usr/include/c++/11/ios:40,
from /usr/include/c++/11/ostream:38,
from /usr/include/c++/11/iostream:39,
from recurs.cpp:1:
/usr/include/c++/11/bits/stl_algobase.h:385:25: error: no match for ‘operator=’ (operand types are ‘std::vector<std::__cxx11::basic_string<char> >’ and ‘std::__cxx11::basic_string<char>’)
385 | *__result = *__first;
| ~~~~~~~~~~^~~~~~~~~~
In file included from /usr/include/c++/11/vector:72,
from recurs.cpp:3:
/ |
voici le fichier recurs.cpp en entier:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| #include <iostream>
#include <string>
#include <vector>
std::vector<std::vector<std::string>>productionstete(std::string tete,std::vector<std::vector<std::string>>const &grammaire_s);
int main(){
std::vector<std::vector<std::string>>grammaire_s={
{"S","A","a"},
{"S","b"},
{"A","A","c"},
{"A","S","d"},
{"A","epsilon"}
};
std::string tetej,tete;
std::vector<std::string>gamma;
std::vector<std::vector<std::string>>P;
for(size_t i=0;i<grammaire_s.size();i++)
for(size_t j=0;j<i;j++)
if(grammaire_s[j][0]==grammaire_s[i][1]){
tetej=grammaire_s[j][0];
P=productionstete(tetej,grammaire_s);
gamma=grammaire_s[i];
gamma.erase(gamma.begin(),gamma.begin()+2);
tete=grammaire_s[i][0];
grammaire_s.erase(grammaire_s.begin()+i);
for(auto p:P){
p.insert(p.end(),gamma.begin(),gamma.end());
grammaire_s.insert(grammaire_s.begin()+i,p.begin(),p.end());
}
}
for(auto p:grammaire_s){
for(auto s:p)
std::cout<<s<<' ';
std::cout<<std::endl;
}
}
std::vector<std::vector<std::string>>productionstete(std::string tete,std::vector<std::vector<std::string>>const &grammaire_s){
std::vector<std::vector<std::string>>sortie;
for(auto p:grammaire_s)
if(p[0]==tete)
sortie.push_back(p);
return sortie;
} |
quelqu'un a une idée?