所以我有一个矢量容器,我生成一个随机字符串(截至目前它已经是# 为了让我能够轻松地看到大小的差异,通过向量分配,只是星号。一切都很好,花花公子,让一切都工作......
当我将向量传递给应该迭代并分配大小的函数时 将向量中的每个元素传递给一个新向量,我总是得到一个错误。这样做的最佳方式是什么?
下面的代码不是我最初的尝试,但我上课迟到了,必须跑步。到目前为止,我在尝试这样做了。
vector<int> siz;
int length = contain.size();
for (vector<string>::iterator i = contain.begin(); i != contain.end(); ++i){
siz.push_back(contain.size());
}
for (vector<int>::iterator j = siz.begin(); j != siz.end(); ++j){
cout << *j << endl;
}
答案 0 :(得分:1)
您需要获取每个元素的大小,而不是容器向量的长度。
您的i
变量是容器向量上的迭代器,它基本上作为指向每个元素的指针。在循环体中,访问对象i
指向的大小,以获得该对象的大小。
vector<int> siz;
for (vector<string>::iterator i = contain.begin(); i != contain.end(); ++i){
siz.push_back(i->size());
}
答案 1 :(得分:0)
如果我理解你的意图,你想要一个包含向量siz
中每个string
的长度的向量contain
,对吗?如果是这样,您不希望contain.size()
,因为这只是字符串向量的长度。要获得每个字符串的大小,请参阅下文。
vector<int> siz;
for (vector<string>::iterator i = contain.begin(); i != contain.end(); ++i){
string currentString = *i;
siz.push_back(currentString.size());
}