声明:虽然本系列博客与具体的编程语言无关。可是本文做者对c++相对比较熟悉,其次是java,因此不免会有视角上的误差。举例也大可能是和这两门语言相关。java
上一篇博客概念性的介绍了vector,咱们有了大体的印象:vector不过就是看上去能够自增加的数组么。这篇博客将稍微介绍下STL与se中的vector,由于比较简单。ios
其实能够在这里看到全部的方法和使用说明。这里没有一一介绍的必要哈。这里要注意下C++98 C++11以及其余版本的方法可能稍有出入,你要根据本身的须要查看刚才的那个连接便可。c++
#include <iostream> #include <vector> using namespace std; int main() { vector<int> vec; for (int i = 0; i < 10; ++i) { vec.push_back(i); //添加元素 } for(int val : vec) { cout << val << " "; // 0,1,2,3,4,5,6,7,8,9 } cout << endl; //迭代器 vector<int>::iterator it = vec.begin(); while (it != vec.end()) { cout << *it << " "; // 0,1,2,3,4,5,6,7,8,9 it++; } cout << endl; //重置迭代器it it = vec.begin(); for (int i = 10; i < 25; ++i) { vec.push_back(i); //添加元素 } //来一个新的迭代器 vector<int>::iterator itnew = vec.begin(); while (itnew != vec.end()) { cout << *itnew << " "; //正常打印 0,1,2,3,4,5,6,7,8,9...... itnew++; } cout << endl; //测试旧迭代器 while (it != vec.end()) { cout << *it << " "; //我会报错使程序当掉 0,1,2,3,4,5,6,7,8,9...... it++; } cout << endl; system("pause"); return 0; }
在java中,和vector更加接近的实际上是ArrayList,可是其没有重载[],而是经过get与set方法获取与设置数据。固然java中也有Vector,只不过java中的Vector是同步的,能够由两个线程安全地访问一个Vector对象。可是,若是由一个线程访问Vector,代码要在同步操做上耗费大量时间。另外必须指出:这里的同步并非彻底的线程安全的,在两个操做之间并非原子操做!!!。可参见这里。git
java中全部的变量都是引用,这给熟悉c++的人常常带来很大的困扰,从而产生不少bugs。今天就踩了一个坑,若是咱们要在循环体中,为ArrayList add元素,那么必定要在添加元素前,new一个新的。直接看代码吧。github
stu = new student(); //这里必定要new一下sql
public ArrayList<student> query() { ArrayList<student> students = new ArrayList<student>(); try { //1. 链接 conn = JDBCUtil.getConn(); //2. statement st = conn.createStatement(); String sql = "select * from t_stu"; rs = st.executeQuery(sql); while(rs.next()){ stu = new student(); //这里必定要new一下 stu.setid(rs.getInt("id")); stu.setage(rs.getInt("age")); stu.setname(rs.getString("name")); students.add(stu); } System.out.println(students); } catch (Exception e) { e.printStackTrace(); }finally { JDBCUtil.release(conn, st, rs); } return students; }
小秘密:下一篇将讲解list以及由list组成的基本数据结构。
See you next time. Happy Coding!!!
个人github编程