您的位置:

vector插入的多方面探讨

一、vector插入不重复元素

在使用vector插入元素时,有时需要保证不重复插入元素,可以通过以下方式进行实现:

vector v;
int num = 5;
if(find(v.begin(), v.end(), num) == v.end()) {
    v.push_back(num);
}

  

上述代码中使用了STL库中的find函数,如果查找到num这个元素,则返回其在vector中的位置,否则返回vector的end位置。如果查找结果为end位置,则说明vector中没有这个元素,可以将其插入到vector中。

二、cvector插入

cvector是C++98标准之前的写法,使用指针操作数组。cvector插入元素的方式如下:

int arr[5] = {1, 2, 3, 4, 5};
int* ptr = arr;
int len = 5;
while(len--) {
    cout << *(ptr++) << " ";
}

上述代码中,由于cvector使用指针来操作数组,要判断插入的位置是否越界,同时插入元素时需要将后续元素向后移动,相比vector效率较低。

三、vector和arraylist区别

vector是C++ STL库中的容器,arraylist是Java集合框架中的类,它们之间的区别主要在以下几个方面:

1. arraylist只能存储对象类型,而vector可以存储对象和基本数据类型;

2. arraylist支持动态增长和缩小,而vector只支持动态增长;

3. arraylist是线程安全的,而vector不是线程安全的。

四、vector函数

除了插入函数外,vector还有一些其他常用的函数:

1. push_back:将元素插入到vector末尾;

2. pop_back:删除vector末尾最后一个元素;

3. size:返回vector中元素的个数;

4. capacity:返回vector当前分配的空间大小,即可以容纳的元素个数。

五、vector insert函数

vector中的insert函数可以在任意位置插入元素,具体使用方式如下:

vector v;
v.insert(v.begin() + 2, 3); // 在第3个位置插入元素3

  

此外,还可以一次性插入多个元素:

vector v;
int arr[3] = {1, 2, 3};
v.insert(v.begin() + 1, arr, arr+3); // 在第2个位置插入元素1, 2, 3

  

六、vector的用法

vector有很多用法,其中常见的有遍历、排序、查找等:

1. 遍历:

vector v = {1, 2, 3};
for(int i=0; i
   

    

2. 排序:

vector v = {3, 1, 2};
sort(v.begin(), v.end()); // 将vector按升序排序

     

3. 查找:

vector v = {1, 2, 3};
int num = 2;
bool isExist = (find(v.begin(), v.end(), num) != v.end()); // 在vector中查找元素是否存在

     

七、vector增加一个元素

如果只需要在vector中增加一个元素,可以使用push_back函数:

vector v = {1, 2, 3};
v.push_back(4); // 往vector中增加一个元素4

     

八、vector insert用法

上文已经介绍了vector insert函数的基本用法,还可以在指定位置插入重复元素,或者根据条件进行插入:

vector v = {1, 2, 3};
auto it = v.begin() + 2; // 获取第3个元素的迭代器
v.insert(it, 2, 0); // 在第3个位置插入两个元素0
v.insert(it, {4, 5, 6}); // 在第3个位置插入三个元素4, 5, 6
v.insert(it, {7, 8, 9}, [](int x){ return x > 7; }); // 在第3个位置插入大于7的元素7, 8, 9

     

九、oracle插入clob

在使用Oracle数据库时,如果需要插入比较大的文本数据,可以使用clob类型。插入clob类型的代码如下:

string content = "xxx"; // 待插入的文本数据
string sql = "INSERT INTO table_name VALUES (:clob)"; // 插入clob的SQL语句
OracleConnection conn; // 创建Oracle连接
OracleCommand cmd(conn, sql); // 创建Oracle命令
OracleClob clob(cmd, 1); // 创建Oracle Clob对象
clob.Write(content.c_str(), content.size()); // 写入clob对象
cmd.ExecuteNonQuery(); // 执行SQL语句