如何迭代矢量大小并分配给新的矢量?

时间:2014-06-05 17:32:28

标签: c++ vector

所以我有一个矢量容器,我生成一个随机字符串(截至目前它已经是# 为了让我能够轻松地看到大小的差异,通过向量分配,只是星号。一切都很好,花花公子,让一切都工作......

当我将向量传递给应该迭代并分配大小的函数时 将向量中的每个元素传递给一个新向量,我总是得到一个错误。这样做的最佳方式是什么?

下面的代码不是我最初的尝试,但我上课迟到了,必须跑步。到目前为止,我在尝试这样做了。

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;
}

2 个答案:

答案 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());
}