Bonjour,

question:
le code suivant ne compile pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
#include <set>
#include <deque>
int main()
{
    std::set<std::deque<int> > s;
    std::deque<int> d,e;
    d.push_back(10);
    s.insert(d);
    std::set<std::deque<int> >::iterator it;
 
    it->insert(it->begin(), d.begin(), d.end());
    //e=*it;
    //e.insert(e.begin(), d.begin(), d.end());
    return 0;
}
(
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
/home/toto/workspace/c++/dummy/src/main.cpp:11:47: erreur: no matching function for call to ‘std::deque<int>::insert(std::deque<int>::const_iterator, std::deque<int>::iterator, std::deque<int>::iterator) const’
/home/toto/workspace/c++/dummy/src/main.cpp:11:47: note: candidates are:
/usr/include/c++/4.6/bits/deque.tcc:150:5: note: std::deque<_Tp, _Alloc>::iterator std::deque<_Tp, _Alloc>::insert(std::deque<_Tp, _Alloc>::iterator, const value_type&) [with _Tp = int, _Alloc = std::allocator<int>, std::deque<_Tp, _Alloc>::iterator = std::_Deque_iterator<int, int&, int*>, std::deque<_Tp, _Alloc>::value_type = int]
/usr/include/c++/4.6/bits/deque.tcc:150:5: note:   candidate expects 2 arguments, 3 provided
/usr/include/c++/4.6/bits/stl_deque.h:1491:7: note: void std::deque<_Tp, _Alloc>::insert(std::deque<_Tp, _Alloc>::iterator, std::deque<_Tp, _Alloc>::size_type, const value_type&) [with _Tp = int, _Alloc = std::allocator<int>, std::deque<_Tp, _Alloc>::iterator = std::_Deque_iterator<int, int&, int*>, std::deque<_Tp, _Alloc>::size_type = unsigned int, std::deque<_Tp, _Alloc>::value_type = int]
/usr/include/c++/4.6/bits/stl_deque.h:1491:7: note:   no known conversion for argument 1 from ‘std::deque<int>::const_iterator {aka std::_Deque_iterator<int, const int&, const int*>}’ to ‘std::_Deque_iterator<int, int&, int*>’
/usr/include/c++/4.6/bits/stl_deque.h:1506:9: note: template<class _InputIterator> void std::deque::insert(std::deque<_Tp, _Alloc>::iterator, _InputIterator, _InputIterator) [with _InputIterator = _InputIterator, _Tp = int, _Alloc = std::allocator<int>, std::deque<_Tp, _Alloc>::iterator = std::_Deque_iterator<int, int&, int*>]
)

alors que celui-ci oui
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <set>
#include <deque>
int main()
{
    std::set<std::deque<int> > s;
    std::deque<int> d,e;
    d.push_back(10);
    s.insert(d);
    std::set<std::deque<int> >::iterator it;
 
    //it->insert(it->begin()+0, d.begin(), d.end());
    e=*it;
    e.insert(e.begin(), d.begin(), d.end());
    return 0;
}
pourquoi alors que it-> est au même niveau que e (copié par valeur)?
(j'utilise g++
Target: i686-linux-gnu
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
)