ACM STL之vector

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013345179/article/details/88429819

vector 是向量 也成动态数组既数组的大小可以根据数据自动变化。使用时要包含头文
定义
vector<类型>变量名;
初始化
vectora;
vectorb(a);把a的所有元素给b(必须要同类型)。/vectorb=a;
vectora(n,m);a包含n个元素每个元素都为m。
vectora(n);包含n个元素初始化为0。
vectora{b,c,d,e,f};包含花括号中个数的元素,每个值都相对应。/vectora={b,c,d,e,f};

void push_back(const T& x):向量尾部增加一个元素X
iterator insert(iterator it,const T& x):向量中迭代器指向元素前增加一个元素x
iterator insert(iterator it,int n,const T& x):向量中迭代器指向元素前增加n个相同的元素x
iterator insert(iterator it,const_iterator first,iterator last):向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据 eg v.insert(v.begin()+2,1);在v中第二个元素前插入新元素
v.insert(v.begin(),s.begin(),s.end());
v.resize(n)若size大于n保留前n个元素否则就会补齐到n个。
v.empty(); 判断是否为空,为空返回1,否则返回0;
v.size()判断数组元素的个数。
v.clear()清空。
v.erase(iterator a)删迭代器位置的元素
v.erase(iterator begin,iterator end)删除指定区间的元素。
若用下边来操作vector尽量不要用来赋值 若vector中不存在该下标则无法赋值。
在循环中执行erase是类似于map。

最近在做题时做到了移动木块的问题。一开始以为是用栈一个个的往外弹然后再压进去。后来发现需要定位两个木块的位置因为两个木块不一定在原处还有可能在别的木块的上方或下方 vector的resize函数在对vector操作完后就可以直接将后面的多余的删掉 并且用栈也不会查找,收获颇丰。

展开阅读全文

STL vector push_back 出错!!!!

03-19

[code=C/C++]rnrntypedef struct stHeaderrnrn ULONG uIp; //ip or userCountrn USHORT uPort;rn char szName[MAX_CHAR];rn stHeader():uPort(0),uIp(0)rn rn rnstHeader;rntypedef vector vecUserListrn.....rn.rnrnvecUserList::iterator itUserList;rn stHeader* pHeader = NULL;rn switch(((stMessage*)pBuffer->buf)->enMsgTp)rn rn case tp_LoginIn: //登陆rn pHeader = new stHeader;rn if(pHeader == NULL)rn break;rn pHeader->uIp = pAddrFrom->sin_addr.S_un.S_addr;rn pHeader->uPort = pAddrFrom->sin_port;rn lstrcpyA(pHeader->szName , ((stMessage*)(pBuffer->buf))->Content.stMyHeader.szName);rn m_vecUserList.push_back(pHeader);//保存登陆客户端信息rn[/code]rn当我执行到push_back的时候会报异常!!!rnP2PServer.exe 中的 0x7c919064 处最可能的异常: 0xC0000005: 读取位置 0xcccccccc 时发生访问冲突rnP2PServer.exe 中的 0x7c812aeb 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0121edc0 处的 CMemoryException。rnP2PServer.exe 中的 0x7c812aeb 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0121edc0 处的 CMemoryException。rnP2PServer.exe 中的 0x7c919064 处最可能的异常: 0xC0000005: 读取位置 0xcccccccc 时发生访问冲突rnP2PServer.exe 中的 0x7c812aeb 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0121edc0 处的 CMemoryException。rnP2PServer.exe 中的 0x7c812aeb 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0121edc0 处的 CMemoryException。rn对STL不熟练!!高手指点原因!! 论坛

STLvector的问题

03-09

#include rn#include rnrnusing namespace std;rnrnvoid main()rnrn std::vector m_vec;rn m_vec.push_back(0);rn m_vec.push_back(1);rn for(int index = 0, std::vector::iterator it = m_vec.begin(); it != m_vec.end(); ++it,++index)rn rn cout<------ 已启动生成: 项目: Test, 配置: Debug Win32 ------rn1>正在编译...rn1>Test.cpprn1>f:\test\test\test\test.cpp(11) : error C2146: 语法错误 : 缺少“,”(在标识符“it”的前面)rn1>f:\test\test\test\test.cpp(11) : error C2350: “std::vector<_Ty>::iterator”不是静态成员rn1> withrn1> [rn1> _Ty=intrn1> ]rn1>f:\test\test\test\test.cpp(11) : error C2440: “初始化”: 无法从“std::_Vector_iterator<_Ty,_Alloc>”转换为“int”rn1> withrn1> [rn1> _Ty=int,rn1> _Alloc=std::allocatorrn1> ]rn1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符rn1>f:\test\test\test\test.cpp(11) : error C2784: “bool std::operator !=(const std::vector<_Ty,_Alloc> &,const std::vector<_Ty,_Alloc> &)”: 无法从“int”为“const std::vector<_Ty,_Alloc> &”推导 模板 参数rn1> d:\学习软件\visual studio 2005\vc\include\vector(1268) : 参见“std::operator !=”的声明rn1>f:\test\test\test\test.cpp(11) : error C2784: “bool std::operator !=(const std::istream_iterator<_Ty,_Elem,_Traits,_Diff> &,const std::istream_iterator<_Ty,_Elem,_Traits,_Diff> &)”: 无法从“int”为“const std::istream_iterator<_Ty,_Elem,_Traits,_Diff> &”推导 模板 参数rn1> d:\学习软件\visual studio 2005\vc\include\iterator(277) : 参见“std::operator !=”的声明rn1>f:\test\test\test\test.cpp(11) : error C2784: “bool std::operator !=(const std::allocator<_Ty> &,const std::allocator<_Other> &) throw()”: 无法从“int”为“const std::allocator<_Ty> &”推导 模板 参数rn1> d:\学习软件\visual studio 2005\vc\include\xmemory(181) : 参见“std::operator !=”的声明rn1>f:\test\test\test\test.cpp(11) : error C2784: “bool std::operator !=(const std::istreambuf_iterator<_Elem,_Traits> &,const std::istreambuf_iterator<_Elem,_Traits> &)”: 无法从“int”为“const std::istreambuf_iterator<_Elem,_Traits> &”推导 模板 参数rn1> d:\学习软件\visual studio 2005\vc\include\xutility(2190) : 参见“std::operator !=”的声明rn1>f:\test\test\test\test.cpp(11) : error C2784: “bool std::operator !=(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &)”: 无法从“int”为“const std::reverse_iterator<_RanIt> &”推导 模板 参数rn1> d:\学习软件\visual studio 2005\vc\include\xutility(1872) : 参见“std::operator !=”的声明rn1>f:\test\test\test\test.cpp(11) : error C2784: “bool std::operator !=(const std::pair<_Ty1,_Ty2> &,const std::pair<_Ty1,_Ty2> &)”: 无法从“int”为“const std::pair<_Ty1,_Ty2> &”推导 模板 参数rn1> d:\学习软件\visual studio 2005\vc\include\utility(68) : 参见“std::operator !=”的声明rn1>f:\test\test\test\test.cpp(11) : error C2677: 二进制“!=”: 没有找到接受“std::_Vector_iterator<_Ty,_Alloc>”类型的全局运算符(或没有可接受的转换)rn1> withrn1> [rn1> _Ty=int,rn1> _Alloc=std::allocatorrn1> ]rn1>生成日志保存在“file://f:\Test\Test\Test\Debug\BuildLog.htm”rn1>Test - 10 个错误,0 个警告rn========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========rn 论坛

没有更多推荐了,返回首页