现在的位置: 首页 > 综合 > 正文

STL拾漏补遗

2014年11月12日 ⁄ 综合 ⁄ 共 782字 ⁄ 字号 评论关闭

1.std::string::copy(char*,int pos, int count)

   std::string str = "hello, world";
   char var[4] = { 0 };
   str.copy(var, 3, 2);

2.vector[i].若超界,输出一个随机数,vector.at(i)超界会抛出异常

3.vector插入类时,必须定义这样一个拷贝构造函数:
CA(const CA&)
{}


4.vector获取和设置最后/第一个元素
int ifront = vec.front();
int iback = vec.back();

vec.front() = 123;
vec.back() = 345;

5.如果vector的元素是CA*, vec.push_back(new CA);那么必须手动循环删除vector里面的指针

6.map::erase( key );

7.传递仿函数的引用,其实没也效果,比如这样一个类,IntSequence:
generate_n<back_insert_iterator<list<int> >,
int, IntSequence&>(back_inserter(coll), 4, seq);
generate_n内部,会调用另外一个_Generate_n函数,这个函数会真正的调用seq(),虽然调用generate_n时使用了引用,
但_Generate_n却无法设定为使用引用,所以调用结束时,seq的状态并没有改变

8.
inline std::string Test()
{
std::string ret;
ret.reserve(20); //这表示预留20字节的空间,但还没有用

strcpy(&ret[0], "what kind"); ret此时的大小为0,所以返回一个空串
return ret;
}


9.std::map, 使用find()和count()方法来判断是否存在某一个元素

抱歉!评论已关闭.