C++学习(六)

这章主要对Java和C++中容器的使用情况做个简要的总结,同时也可以体现出Java和C++在容器方面的不同

1.Java容器类的使用

1.1 List(有序,可重复)

取元素:get();

存元素:set();

迭代器:Iterator,listIterator,它就相当于游标,指向当前元素,因此只能通过对适当位置的元素进行操作,且迭代器要在容器添加好元素后才声明,否则迭代器所指向的元素为空

1.2 Set(无序,不可重复)

存取元素:通过Iterator

在比较值时要重写hashcode()和equal()方法

List和Set都可以通过如下方法来遍历元素,进行某种操作,如:

Set<Integer> s=new HashSet<Integer>;

for(Integer i:s)

{.....}

1.3 Vector有点类似于List,就不做过多的解释了

1.4 Map:键值对,因此一般会用Set容器来存放取出的键值对

存元素:put()

取元素:Iterator <Map.Entry<类型,类型>>=Map对象.entrySet().iterator;

get(key值);

keySet(key值);//获取到以key值作为key的所有value组成的Set对象

注意:若要对map或者list,set等容器中的元素进行排序,可使用Comparator<T>接口,如:

public class myComparator implements Comparator<T>

{

public int compare(T t1,T t2)

{

return t1.compareTo t2;

}

}

.....

myComparator comp=new myComparator();

.....

Collections.sort(list,comp);//假设此时list中已有元素

2.C++中容器类的使用

2.1 Vector

初始化:vector<string> v(数目,初始值);

取元素:v.at(i)   pop_back();//取出栈顶元素  v[n];//不能v[n]=....  迭代器(参考前面所讲章节)

存元素:push_back();  insert();

2.2 List :双向链表

取元素:迭代器  pop_back()  pop_front()

存元素:push_back()  insert()  push_front

2.3 map:键值对

取元素:迭代器

存元素:insert(pair<key-type,value-type>(***,***));  insert(map<key-type,value-type>::value_type(**,**));

在C++中容器的begin,end,find方法返回的都是迭代器

容器无论是在C++中还是Java中都是很有用的东西,是我们编写程序时必不可少要用到的数据结构,因此要灵活运用

容器类还有许多有用的API,可以在具体使用时进行查看

插播下C++中有关字符串和整数之间的转换。。。。

3.C++中字符串转换为int型整数一直是我比较头疼的问题,从网上搜了下资料,整理得如下几个解决的办法:

3.1 #include<sstream>

string s; int n; stringstream ss;//字符串流

cin<<s;//输入字符串

ss<<s;//字符串传递给字符串流

n<<ss;//字符串流传递给整数

同样的道理通过字符串流也可以将整数转换为字符串

3.2利用sscanf()格式化输入函数,不过这种方法用的比较少

sscanf("字符串","格式(与正则表达式类似)","格式化后赋值的对象")

3.3字符串数组如s,通过s[i]-'0'将字符串中的逐个逐个字符转换为相应的整数,这样整个字符串就都转换为了整数

4.C++中有几种智能指针,auto_ptr,shared_ptr,unique_ptr,weak_ptr,智能指针的好处在于能在析构函数中定义delete()函数,这样,当程序终止时,会自动释放指针所指向的内存,避免内存泄露

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值