C++ std::vector指定位置插入
最后发布:2017-09-05 19:31:47
首发:2017-09-05 19:31:47
<div id="article_content" class="article_content clearfix">
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-211130ba7a.css">
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-211130ba7a.css">
<div class="htmledit_views" id="content_views">
<p><strong>使用<span style="color:#990000;">vector</span>,必须加上:<span style="color:#990000;">#</span><span style="color:#0000ff;">include</span><span style="color:#990000;"> <vector></span></strong></p>
1.初始化vector,一般有这几种方式:
-
std::
vector<
std::wstring> v1;
//创建一个空的wstring类型的vector
-
std::
vector<
std::wstring> v2(
3,
L"c");
//创建一个容量为3,全部初始化L"c"
-
std::
vector<
int> v3(
5);
//创建容量为5,数据类型为int的vector
-
std::
vector<
int> v4(v3);
//创建一个从v3拷贝过来的vector
-
std::
vector<
int> v5 = {
1,
2,
3,
4,
5,
6,
7};
//C++11才支持,直接值初始化,最方便
-
第五种方法: vector<int> v5{1,2,3.0,4,5,6,7};
v5初始化为列表中元素的拷贝,列表中元素必须与v5的元素类型相容,本例中必须是与整数类型相容的类型,整形会直接拷贝,其他类型会进行类型转换
2.在指定位置插入元素:
-
v2.insert(v2.begin()+
4,
L"3");
//在指定位置,例如在第五个元素前插入一个元素
-
-
v2.insert(v2.end(),
L"3");
//在末尾插入一个元素
-
-
v2.push_back(
L"9");
//在末尾插入一个元素
-
-
v2.insert(v2.begin(),
L"3");
//在开头插入一个元素
3.删除数据:
-
v2.erase(v2.begin());
//删除开头的元素
-
-
v2.erase(v2.begin(),v2.end);
//删除[begin,end]区间的元素
-
-
v2.pop_back();
//删除最后一个元素
-
函数 说明
-
-
c.assign(beg,end)
//将[beg; end)区间中的数据赋值给c。
-
-
c.assign(n,elem)
//将n个elem的拷贝赋值给c。
-
-
c.at(idx)
//传回索引idx所指的数据,如果idx越界,抛出out_of_range。
-
-
c.back()
//传回最后一个数据,不检查这个数据是否存在。
-
-
c.begin()
//传回迭代器中的第一个数据地址。
-
-
c.capacity()
//返回容器中数据个数。
-
-
c.clear()
//移除容器中所有数据。
-
-
c.empty()
//判断容器是否为空。
-
-
c.end()
//指向迭代器中的最后一个数据地址。
-
-
c.erase(pos)
//删除pos位置的数据,传回下一个数据的位置。
-
-
c.erase(beg,end)
// 删除[beg,end)区间的数据,传回下一个数据的位置。
-
-
c.front()
//传回第一个数据。
-
-
get_allocator
//使用构造函数返回一个拷贝。
-
-
c.insert(pos,elem)
//在pos位置插入一个elem拷贝,传回新数据位置。
-
-
c.insert(pos,n,elem)
//在pos位置插入n个elem数据。无返回值。
-
-
c.insert(pos,beg,end)
//在pos位置插入在[beg,end)区间的数据。无返回值。
-
-
c.max_size()
//返回容器中最大数据的数量。
-
-
c.pop_back()
//删除最后一个数据。
-
-
c.push_back(elem)
//在尾部加入一个数据。
-
-
c.rbegin()
//传回一个逆向队列的第一个数据。
-
-
c.rend()
//传回一个逆向队列的最后一个数据的下一个位置。
-
-
c.resize(num)
//重新指定队列的长度。
-
-
c.reserve()
//保留适当的容量。
-
-
c.size()
//返回容器中实际数据的个数。
-
-
c1.swap(c2)
//将c1和c2元素互换。
-
-
swap(c1,c2)
//同上操作。
-
-
vector<Elem> c
//创建一个空的vector。
-
-
vector<Elem> c1(c2)
//复制一个vector。
-
-
vector <Elem> c(n)
//创建一个vector,含有n个数据,数据均已缺省构造产生。
-
-
vector <Elem> c(n, elem)
//创建一个含有n个elem拷贝的vector。
-
-
vector <Elem> c(beg,end)
//创建一个以[beg;end)区间的vector。
-
-
c.~
vector <Elem>()
//销毁所有数据,释放内存。
-
-
operator[]
//返回容器中指定位置的一个引用。
<div class="person-messagebox">
<div class="left-message"><a href="https://blog.csdn.net/wcc27857285">
<img src="https://profile.csdnimg.cn/7/7/A/3_wcc27857285" class="avatar_pic" username="wcc27857285">
</a></div>
<div class="middle-message">
<div class="title"><span class="tit "><a href="https://blog.csdn.net/wcc27857285" data-report-click="{"mod":"popu_379","ab":"new"}" target="_blank">Bird鸟人</a></span>
<!-- 等级,level -->
<img class="identity-icon" src="https://csdnimg.cn/identity/blog6.png"> </div>
<div class="text"><span>原创文章 201</span><span>获赞 162</span><span>访问量 44万+</span></div>
</div>
<div class="right-message">
<a class="btn btn-sm bt-button personal-watch" data-report-click="{"mod":"popu_379","ab":"new"}">关注</a>
<a href="https://bbs.csdn.net/topics/395530871" target="_blank" class="btn btn-sm bt-button personal-messageboard">他的留言板
</a>
</div>
</div>
</div>
</article>