vector<int> ivec4(10, -1); // 10 elements, each initialized to -1
vector<string> svec(10, "hi!"); // 10 strings, each initialized to "hi!"
vector的操作
v.empty()
如果v为空,则返回true,否则返回false。
v.size()
返回v中元素的个数。
v.push_back(t)
在v的末尾增加一个值为t的元素。
v[n]
返回v中位置为n的元素。
v1 = v2
把v1的元素替换为v2中元素的副本。
v1 == v2
如果v1与v2相等,则返回true。
!=, <, <=, >, >=
保持这些操作符惯有的含义。
向vector添加元素:
复制代码 代码如下:
string word;
vector<string> text; // empty vector
while (cin >> word) {
text.push_back(word); // append word to text
}
vector的下标操作:
for (vector<int>::size_type ix = 0; ix != ivec.size(); ++ix)
ivec[ix] = 0;
vector迭代器
每种容器都定义了一对命名为begin和end的函数,用于返回迭代器。如果容器中有元素的话,由begin返回的迭代器指向第一个元素:
复制代码 代码如下:
vector<int>::iterator iter = ivec.begin();
由end操作返回的迭代器指向vector的“末端元素的下一个”。通常称为超出末端迭代器(off-the-end iterator),表明它指向了一个不存在的元素。如果vector为空,begin返回的迭代器与end返回的迭代器相同。
复制代码 代码如下:
for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
*iter = 0; // set element to which iter refers to 0
const_iterator
前面的程序用vector::iterator改变vector中的元素值。每种容器类型还定义了一种名为const_iterator的类型,该类型只能访问容器内元素,但不能改变其值。
复制代码 代码如下:
for (vector<string>::const_iterator iter = text.begin(); iter != text.end(); ++ iter)
*iter = " "; // error: *iter is const