C++ STL容器vector篇(五) vector容器常用初始化操作总结(一维/二维)
总结一下C++中vector容器的常用初始化操作, 并且与Python的列表(List)类型进行一个简单对比.
·
vector
初始化方法
一维向量
#include <iostream>
#include <vector>
using namespace std;
// 定义遍历(输出)一维数组的函数
void print1d(vector<int> &v)
{
for (vector<int>::iterator it = v.begin(); it < v.end(); ++it)
{
cout << *it << " ";
}
cout << endl;
}
void vector_1d()
{
// 1. 初始化一维大小为10的向量
vector<int> v1(10);
// 遍历
print1d(v1);
// 向量元素默认全为0
// 0 0 0 0 0 0 0 0 0 0
// 2. 给定初始值, 10个2
vector<int> v2(10, 2);
print1d(v2);
// 2 2 2 2 2 2 2 2 2 2
// 3. 直接给定数据:C++11新标准, 下面两种写法均可
vector<int> v3 {1,2,3,4,5};
// vector<int> v3 = {1,2,3,4,5};
print1d(v3);
// 1 2 3 4 5
// 4. 通过数组首地址初始化, 需要有一个定义好的数组
int arr[] = {1,2,3,4,5};
vector<int> v4(arr, arr+3);
print1d(v4);
// 1 2 3
// 5. 拷贝构造函数
// 5.1 直接拷贝
vector<int> v5_1(v1);
print1d(v5_1);
// 0 0 0 0 0 0 0 0 0 0
// 5.2 左闭右开区间元素拷贝给容器本身
vector<int> v5_2(v1.begin()+1, v1.end()-1);
print1d(v5_2);
// 0 0 0 0 0 0 0 0
}
int main(int argc, char const *argv[])
{
vector_1d();
return 0;
}
二维向量
#include <iostream>
#include <vector>
using namespace std;
// 定义遍历二维数组的函数
void print2d(vector<vector<int> > &v)
{
for (vector<vector<int> >::iterator it = v.begin(); it<v.end();++it)
{
for (vector<int>::iterator vit = (*it).begin();vit<(*it).end();++vit)
{
cout<<*vit<<" ";
}
cout<<endl;
}
}
void vector_2d()
{
// 1. 直接初始化, 赋值时可采用向二维数组中添加一维数组的方法
int row=3,col=4;
// 生成一个3行4列的二维向量, 默认元素值均为0
vector<vector<int> > v1(row, vector<int>(col));
print2d(v1);
/*
0 0 0 0
0 0 0 0
0 0 0 0
*/
// 2. 初始化并赋初值(初始化的向量值全为指定值)
vector<vector<int> > v2(row, vector<int>(col, 1));
print2d(v2);
/*
1 1 1 1
1 1 1 1
1 1 1 1
*/
// 3. 使用resize()方法指定数组大小, 这里生成一个行数等于列数的二维数组(下三角阵)
vector<vector<int> > v3;
v3.resize(row);
for (int k = 0; k < row; ++k)
v3[k].resize(k + 1); //每行为k+1列
print2d(v3);
/*
0
0 0
0 0 0
*/
// 4. C++11特性, 直接赋初值
vector<vector<int> > v4{{1,2,3,4}, {2,3,4,5}, {3,4,5}};
print2d(v4);
/*
1 2 3 4
2 3 4 5
3 4 5
*/
}
int main(int argc, char const *argv[])
{
vector_2d();
return 0;
}
参考

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)