vector<vector<string> > vvs;
vector<string> vs;
vs.push_back("r1-c1");
vs.push_back("r1-c2");
vs.push_back("r1-c3");
vvs.push_back(vs);
for (vector<vector<string> >::iterator vvsi = vvs.begin(); vvsi != vvs.end(); vvsi++) {
vector<string> vec_str = *vvsi;
for (vector<string>::iterator vsi = vec_str.begin(); vsi != vec_str.end(); vsi++) {
cout << *vsi << ", ";
}
cout << "\n";
}
В приведенном выше C++ кода, чтобы избежать копирования вектора (вектор vec_str = * vvsi) я попытался код нижеC++ Программирование: Ошибка при назначении итератор вектора
vector<string> *vec_str = vvsi.base(); //Working. which (returns a const pointer&)
vector<string> *vec_str = &(*vvsi); //Working. Assigning the address
Но
vector<string> *vec_str = vvsi; //Error. Not able to assign
Ошибка
(build error : cannot convert 'std::vector<std::vector<std::basic_string<char> > >::iterator to 'std::vector<std::basic_string<char> >*' in initialization)
В случае intege г
int a=10;
int *b = &a; //working. Assigning address
int *c = &(*b); //working. Assigning address
int *d = b; //working. Assigning address
*c=11;
std::cout << a<<"\n";
*d=12;
std::cout << a<<"\n";
В случае вектора, почему ошибка сборки при назначении (не в состоянии понять из итератора документации C++)?