Advertisement

C++中的STL vector详解:初始化与常用操作(增删查改)

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:DOCX


简介:
本文详细解析了C++标准模板库(STL)中vector容器的使用方法,包括其初始化技巧以及增加、删除、查找和修改元素等常见操作。 ### C++ STL 中 Vector 的详解 #### 一、Vector 的初始化方法 在 C++ 的标准模板库(STL)中,`vector` 是一种非常重要的容器类型,它提供了动态数组的功能,可以方便地进行元素的增删操作。下面详细介绍 `vector` 的多种初始化方式。 1. **默认构造函数** - **定义**: ```cpp std::vector v; ``` - **示例**: ```cpp #include #include int main() { std::vector v; 创建一个空的 vector std::cout << Size of vector v: << v.size() << std::endl; return 0; } ``` 2. **拷贝构造函数 copy 区间** - **定义**: ```cpp std::vector(iter_begin, iter_end); ``` - **示例**: ```cpp #include #include int main() { std::vector v = {1, 2, 3, 4, 5}; std::vector v2(v.begin(), v.begin() + 3); for (int num : v2) { std::cout << num << ; } return 0; } ``` 3. **指定数量和元素值的构造函数** - **定义**: ```cpp std::vector(n, elem); ``` - **示例**: ```cpp #include #include int main() { std::vector v(5, 10); for (int num : v) { std::cout << num << ; } return 0; } ``` 4. **指定数量的构造函数** - **定义**: ```cpp std::vector(n); ``` - **示例**: ```cpp #include #include int main() { std::vector v(5); for (int num : v) { std::cout << num << ; } return 0; } ``` 5. **拷贝构造函数** - **定义**: ```cpp std::vector(const vector& vec); ``` - **示例**: ```cpp #include #include int main() { std::vector v = {1, 2, 3}; std::vector copyOfV(v); for (int num : copyOfV) { std::cout << num << ; } return 0; } ``` #### 二、Vector 的常用操作 6. **插入函数** - **定义**: ```cpp iterator insert(const_iterator position, const T& value); ``` - **示例**: ```cpp #include #include int main() { std::vector v = {1, 2, 3}; v.insert(v.begin(), 0); for (int num : v) { std::cout << num << ; } return 0; } ``` 7. **尾部添加 `push_back(ele)`** - **定义**: ```cpp void push_back(const T& value); ``` - **示例**: ```cpp #include #include int main() { std::vector v = {1, 2}; v.push_back(3); for (int num : v) { std::cout << num << ; } return 0; } ``` 8. **尾部删去 `pop_back()`** - **定义**: ```cpp void pop_back(); ``` - **示例**: ```cpp #include #include int main() { std::vector v = {1, 2}; v.pop_back(); for (int num : v) { std::cout << num << ; } return 0; } ``` 9. **删除区间** - **定义**: ```cpp iterator erase(const_iterator first, const_iterator last); ``` - **示例**: ```cpp #include #include int main() { std::vector v = {1, 2, 3}; v.erase(v.begin(), v.end()); for (int num : v) { std::cout << num << ; } return 0; } ``` 10. **删除指定位置** - **定义**: ```cpp iterator erase(const_iterator position); ``` - **

全部评论 (0)

还没有任何评论哟~
客服
客服
  • C++STL vector
    优质
    本文详细解析了C++标准模板库(STL)中vector容器的使用方法,包括其初始化技巧以及增加、删除、查找和修改元素等常见操作。 ### C++ STL 中 Vector 的详解 #### 一、Vector 的初始化方法 在 C++ 的标准模板库(STL)中,`vector` 是一种非常重要的容器类型,它提供了动态数组的功能,可以方便地进行元素的增删操作。下面详细介绍 `vector` 的多种初始化方式。 1. **默认构造函数** - **定义**: ```cpp std::vector v; ``` - **示例**: ```cpp #include #include int main() { std::vector v; 创建一个空的 vector std::cout << Size of vector v: << v.size() << std::endl; return 0; } ``` 2. **拷贝构造函数 copy 区间** - **定义**: ```cpp std::vector(iter_begin, iter_end); ``` - **示例**: ```cpp #include #include int main() { std::vector v = {1, 2, 3, 4, 5}; std::vector v2(v.begin(), v.begin() + 3); for (int num : v2) { std::cout << num << ; } return 0; } ``` 3. **指定数量和元素值的构造函数** - **定义**: ```cpp std::vector(n, elem); ``` - **示例**: ```cpp #include #include int main() { std::vector v(5, 10); for (int num : v) { std::cout << num << ; } return 0; } ``` 4. **指定数量的构造函数** - **定义**: ```cpp std::vector(n); ``` - **示例**: ```cpp #include #include int main() { std::vector v(5); for (int num : v) { std::cout << num << ; } return 0; } ``` 5. **拷贝构造函数** - **定义**: ```cpp std::vector(const vector& vec); ``` - **示例**: ```cpp #include #include int main() { std::vector v = {1, 2, 3}; std::vector copyOfV(v); for (int num : copyOfV) { std::cout << num << ; } return 0; } ``` #### 二、Vector 的常用操作 6. **插入函数** - **定义**: ```cpp iterator insert(const_iterator position, const T& value); ``` - **示例**: ```cpp #include #include int main() { std::vector v = {1, 2, 3}; v.insert(v.begin(), 0); for (int num : v) { std::cout << num << ; } return 0; } ``` 7. **尾部添加 `push_back(ele)`** - **定义**: ```cpp void push_back(const T& value); ``` - **示例**: ```cpp #include #include int main() { std::vector v = {1, 2}; v.push_back(3); for (int num : v) { std::cout << num << ; } return 0; } ``` 8. **尾部删去 `pop_back()`** - **定义**: ```cpp void pop_back(); ``` - **示例**: ```cpp #include #include int main() { std::vector v = {1, 2}; v.pop_back(); for (int num : v) { std::cout << num << ; } return 0; } ``` 9. **删除区间** - **定义**: ```cpp iterator erase(const_iterator first, const_iterator last); ``` - **示例**: ```cpp #include #include int main() { std::vector v = {1, 2, 3}; v.erase(v.begin(), v.end()); for (int num : v) { std::cout << num << ; } return 0; } ``` 10. **删除指定位置** - **定义**: ```cpp iterator erase(const_iterator position); ``` - **
  • JavaScript 实现 HTML DOM 方法
    优质
    本文章详细介绍了在JavaScript中如何通过DOM API对HTML文档进行增删改查的基本操作和常用技巧。适合前端开发人员学习参考。 本段落主要介绍了如何使用JavaScript进行HTML DOM的增删改查操作,并通过实例详细分析了在实际应用中的常见技巧及注意事项。对于需要深入了解该主题的朋友来说,这是一篇值得参考的文章。
  • AndroidSQLite数据库
    优质
    本篇文章详细介绍了在Android开发过程中如何使用SQLite数据库进行数据的增加、删除、修改和查询等基本操作。通过阅读本文,读者可以全面掌握SQLite数据库的操作方法和技术要点。 在Android平台上使用嵌入式关系型SQLite数据库存储数据是一种常见做法。SQLite3支持NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本) 和 BLOB(二进制对象) 等五种基本的数据类型,尽管它只直接定义了这五种类型,但实际上也接受如varchar(n),char(n),decimal(p,s)等其他数据类型的输入,并在处理或存储时自动转换为对应的五种数据类型之一。SQLite的一个显著优点是它可以将各种不同格式的数据存入任何字段中,无需严格遵循字段声明的原始数据类型限制。例如,在一个定义为Integer型的字段内可以存放字符串值,或者在一个布尔型字段里保存浮点数。
  • MySQL JDBC源码
    优质
    本书详细解析了使用Java Database Connectivity (JDBC) API进行MySQL数据库基本CRUD(创建、读取、更新、删除)操作的核心代码和原理。 JDBC连接MySQL进行增删改查操作的源码示例如下:包括创建实体类进行操作的方法以及不使用实体类直接操作数据库的方法。
  • JSP
    优质
    本文章介绍了如何简化JSP中的增删改查(CRUD)操作,通过采用MVC设计模式和使用框架如Spring MVC与MyBatis等,使代码更加简洁、高效。 【JSP(Java Server Pages)增删改查详解】 JSP(Java Server Pages)是Java平台上的一种动态网页技术,它允许开发人员将静态HTML与动态Java代码结合起来,以创建交互式、数据驱动的Web应用程序。在本教程中,我们将探讨如何使用JSP执行基本的数据库操作:增(Add)、删(Delete)、改(Update)和查(Search)。 1. **环境搭建**: 在开始之前,请确保已经安装了Java Development Kit (JDK) 和 Apache Tomcat 服务器,这些都是运行JSP的基础。同时需要一个数据库管理系统如MySQL或Oracle以及相应的JDBC驱动程序。 2. **JDBC连接**: 通过Java Database Connectivity (JDBC) API,JSP可以与数据库进行交互。在页面中使用``标签引入JavaBean来建立数据库连接。 例如: ```jsp ``` 其中的DbUtil类通常包含一个`getConnection()`方法,该方法返回有效的数据库连接。 3. **SQL操作**: JSP页面可以包括Java脚本片段来编写SQL语句。例如,插入新记录时可能使用以下代码: ```jsp <% String sql = INSERT INTO table_name (column1, column2) VALUES (?, ?); PreparedStatement pstmt = dbUtil.getConnection().prepareStatement(sql); pstmt.setString(1, value1); pstmt.setString(2, value2); pstmt.executeUpdate(); %> ``` 这里,`PreparedStatement`用于防止SQL注入并提高性能。 4. **表单提交与处理**: 使用HTML表单收集用户输入,并在JSP页面中处理这些数据以执行数据库操作。例如: ```html
    ``` `processForm.jsp`文件可以获取通过POST请求发送的表单参数。 5. **展示数据**: 为了显示查询结果,可以使用JSP EL(Expression Language)或JavaServer Pages Standard Tag Library (JSTL)标签。例如: ```jsp

    ${item.column1} - ${item.column2}

    ``` 这里`resultList`是后台JavaBean中的属性,包含了查询结果。 6. **更新与删除操作**: 更新和删除记录的操作类似于插入新数据,只是SQL语句有所不同。例如,执行更新时可能使用以下代码: ```sql UPDATE table_name SET column1 = ?, column2 = ? WHERE id = ? ``` 对于删除操作则为: ```sql DELETE FROM table_name WHERE id = ? ``` 7. **异常处理**: 在JSP或JavaBean中包含适当的try-catch块,以便于提供有用的错误信息来应对可能出现的数据库连接失败、SQL执行错误等。 8. **最佳实践**: 尽量避免直接在JSP页面编写过多的Java代码。将业务逻辑和数据访问层移到单独的Java类,并考虑使用MVC(Model-View-Controller)架构组织项目,以提高可维护性和可读性。 通过结合JDBC,JSP为执行数据库操作提供了一种有效的方法。遵循最佳实践可以确保应用程序具有良好的扩展性和安全性。
  • ASP.NET Entity Framework (EF)
    优质
    本文章详细介绍了在ASP.NET中使用Entity Framework进行数据模型的添加、删除、修改和查询等基本操作,并对每个步骤进行了深入解析。 在学习和使用WinForm、ASP.NET WebForms以及三层架构的过程中,我发现对于数据访问的实现无论逻辑简单还是复杂,无论是执行SQL语句还是调用存储过程都需要借助ADO.NET技术,并通过封装好的SQLHelper类传入SQL语句和SqlParameter参数来操作数据库。这种方式虽然功能强大但相对繁琐。 随着对.Net框架理解的深入,在学习ASP.NET MVC知识体系时开始接触并使用微软ORM系列中的Entity Framework(EF)框架。利用EF可以更加便捷地进行数据库操作,提高了开发效率。我先后尝试了三种模式下的EF应用:DBFirst(数据库优先)、ModelFirst(模型优先),以及CodeFirst(代码优先)。
  • SSM
    优质
    本文章讲解在SSM框架(Spring + Spring MVC + MyBatis)中实现数据的增加、删除、修改和查询等基本操作的方法与步骤。 这段代码适合SSM初学者直接运行增删改查操作。只需要在数据库中按照dto类建表,并替换db.properties文件中的数据库配置为自己的数据库设置即可。
  • ASP.NET
    优质
    本文章详细介绍了在ASP.NET开发中如何进行数据的增、删、改、查(CRUD)操作,帮助开发者掌握基本的数据处理技能。 简单代码示例,适用于ASP.NET学习。
  • C#Datagridview数据库
    优质
    本教程详细介绍如何在C#编程环境中使用DataGridView控件进行数据库(如SQL Server)的基本CRUD操作,包括数据绑定、编辑和更新记录等实用技巧。 在C# Winform应用程序中可以直接操作DataGridView控件来实现对数据库数据的增删改查功能。
  • C#/WPF CSV :读写
    优质
    本教程深入讲解如何使用C#和WPF技术进行CSV文件的操作,涵盖从基础的读写到高级的数据查询、更新等操作技巧。 CSV文件无需运行环境,方便移植,并且可以模拟小型数据实现快速读写以及增删改查的功能。它完美兼容xls、xlsx和txt格式。