vector
//vector 序列式容器 可变长的数组 下标进行索引 deque list... // 关联容器 通过key 和 value进行索引 set map... #include<vector> #include<iostream> #include<string> using std::vector; int main() { std::string str; vector<int>demo;//手动指定类型,int类型的vector //vector<int&>res; 不能使用引用,引用是需要初始化,可变长数组不能绑定 vector<int>_ints(10, 100); vector<std::string>strings(10, "I Love Mark!!"); vector<std::string>otherstrings(2, "YoYoYo"); strings.push_back("I Love Mark So Much!!");//在vector 尾部增加 strings.back(); strings.pop_back();//弹出尾部元素 //赋值 strings.assign(10, "I Love Mark!!!!");//重新给容器赋值 strings = otherstrings; //容器级别的交换 strings[0] = otherstrings[0]; //元素的交换 //string&(strings.op[](0).op=( string&(other.op[](0))) ) strings.at(0) = otherstrings.at(0); //string&(ver.at(0)).op=(char*) for (std::size_t i = 0; i < strings.size(); ++i) //不用i++ , 效率低,i++要产生临时变量 { std::cout << strings.at(i) << std::endl; } //迭代器 代表的不是对象本身,是当前容器当中的特定的位置 vector<std::string>strings(10, "666666"); vector<std::string>::iterator it = strings.begin(); std::cout << *it << std::endl; std::cout << it->c_str() << std::endl; auto it = strings.end(); *it = "886";// begin end 产生的是一个半开空间 [) end是没有值的 for (auto it = strings.begin; it != strings.end(); ++it) { std::cout << *it << std::endl; } //使用 rbegin 和 rend 要使用 颠倒的迭代器 for (std::vector<std::string>::reverse_iterator it = strings.rbegin(); it != strings.rend(); ++it) { std::cout << *it << std::endl; } //插入 strings.insert(strings.begin(), "2"); //在begin之前插入 strings.insert(strings.begin(),10, "2"); //在begin之前连续插入10个2 //清除 strings.erase(strings.begin()); strings.erase(strings.begin(), strings.end()); auto tt = strings.begin(); std::cout << *tt << std::endl; tt = strings.erase(tt);//vector 发生改变,内部的迭代器也会改变,需要更新 ++tt; //清空 strings.clear();//清空,size为0 return 0; }