vertor的assign用法

本文展示了如何利用vector::assign函数来构造和复制vector实例,包括使用指定元素数量和默认值进行初始化,以及通过迭代器范围进行元素复制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vector::assign //用来构造一个vector的函数,类似于copy函数
void assign( size_type _Count, const Type& _Val);

//_Count指要构造的vector成员的个数,   _Val指成员的数值,他的类型必须与vector类型一致! 
template<class InputIterator> 
void assign( InputIterator _First, InputIterator _Last ); 
//两个指针,分别指向复制开始和结束的地方! 
EXAMPLE
// vector_assign.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;
   vector<int> v1, v2, v3;
   vector<int>::iterator iter;

   v1.push_back(10);
   v1.push_back(20);
   v1.push_back(30);
   v1.push_back(40);
   v1.push_back(50);

   cout << "v1 = " ;
   for (iter = v1.begin(); iter != v1.end(); iter++)
       cout << *iter << " ";
   cout << endl;

   v2.assign(v1.begin(), v1.end());
   cout << "v2 = ";
   for (iter = v2.begin(); iter != v2.end(); iter++)
       cout << *iter << " ";
   cout << endl;

   v3.assign(7, 4) ;
   cout << "v3 = ";
   for (iter = v3.begin(); iter != v3.end(); iter++)
       cout << *iter << " ";
   cout << endl;
}
输出结果为:
v1 = 10 20 30 40 50 
v2 = 10 20 30 40 50 
v3 = 4 4 4 4 4 4 4 

### C++ 中二维向量 (vector) 的使用方法 在 C++ 中,`std::vector` 是一种动态数组容器,支持动态扩展和收缩。当需要处理多维数据时,可以利用嵌套 `std::vector` 来实现二维向量的功能。 #### 定义与初始化 以下是几种常见的二维向量定义方式: 1. **固定大小并指定初始值** 可以通过构造函数来定义一个具有固定行数和列数的二维向量,并为其赋初值。 ```cpp std::vector<std::vector<int>> b(10, std::vector<int>(5, 0)); // 创建了一个 10 行 5 列的二维向量,所有元素被初始化为 0[^1] ``` 2. **未指定大小** 如果不确定二维向量的具体尺寸,可以直接声明而无需立即分配内存。 ```cpp std::vector<std::vector<int>> c; // 此时 c 不具备任何维度信息,需后续手动调整其大小 ``` 3. **复杂类型的二维向量** 对于更复杂的类型如自定义结构体或类实例组成的二维向量,则同样适用上述模式。 ```cpp struct Card { int value; char suit; }; std::vector<std::vector<Card>> deck(4, std::vector<Card>(13)); // 构建了一副扑克牌表示形式:共四组花色每组含十三张卡牌对象 ``` 4. **全零矩阵构建** 特定场景下可能希望快速生成填充特定数值(比如全是零)的大规模表格状存储空间。 ```cpp const size_t rows = str1.size(); const size_t cols = str2.size(); std::vector<std::vector<int>> dp(rows + 1, std::vector<int>(cols + 1, 0)); // 基于字符串长度建立相应规格的结果记录表,默认单元格均为零 ``` #### 动态修改大小 尽管可以在创建之时就设定好确切参数,但在实际编程过程中往往难以提前预知最终需求的确切形态。因此掌握如何灵活改变现有矢量框架至关重要。 - 添加新行至末端: ```cpp myVector.push_back(std::vector<int>()); ``` - 扩展某一行使其达到目标宽度: ```cpp while(myVector[row].size() < desiredWidth){ myVector[row].push_back(defaultValue); } ``` 以上操作均能有效扩充当前二维向量的实际容量直至满足预期布局为止。 #### 访问元素 访问二维向量中的某个具体位置处的数据项遵循常规索引规则——先定位到对应的一级子集再从中选取所需成员即可完成整个过程。 ```cpp // 获取第 i 行 j 列上的整数值 int element = vec[i][j]; ``` 需要注意的是,在执行此类读写动作之前务必确认所涉及坐标确实位于合法范围内以免引发越界错误等问题发生。 #### 总结说明 综上所述,掌握了这些基础概念之后便能够较为自如地运用C++标准库所提供的强大工具去解决各类涉及到多维数组应用场景下的挑战啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值