网站备案掉了什么原因,十堰seo公司,高端网站的建设,wordpress小工具功能创建数组#xff0c;是程序设计中必不可少的一环。我们一般可以有以下几种方法来创建数组。
一、C内置数组 数组大小固定#xff0c;速度较快 通用格式是#xff1a;数据类型 数组名[ 数组大小 ]; 如 int a[40];//一维数组 int a[5][10];//二维数组 二、vector创建数组 包…创建数组是程序设计中必不可少的一环。我们一般可以有以下几种方法来创建数组。
一、C内置数组 数组大小固定速度较快 通用格式是数据类型 数组名[ 数组大小 ]; 如 int a[40];//一维数组 int a[5][10];//二维数组 二、vector创建数组 包含多种通用算法 长度可变使用灵活但效率稍低 vector是使用 new 和 delete 来管理内存的
#include iostream
#include vector
using namespace std;
int main()
{int n;cin n;vectorstring colors(n);cout array colorss length is colors.size();vectorint weekdays;weekdays.push_back(2);system(pause);return 0;}三、array array 数组模板 在C11中才支持 通用格式array类型名, 元素个数 数组名; 注意因为长度固定这里的元素个数不能是变量。 长度固定提供了更好、更安全的接口执行效率和内置数组相同可以有效替代内置数组
pre namecode classcppinclude iostream
#include array
using namespace std;void main()
{//-----------------------------------------------//--这是1维数组arrayint, 5 myarray { 1, 2, 3, 4, 5 };arrayint, 5 mmyarray;//支持赋值arrayint, 5 m2(myarray);//支持用一个数组去初始化另一个数组-----------------------------------------------//cout myarray endl;//for (size_t n 0; n myarray.size(); n){// cout myarray[n] \t;//}
}四、valarrayvalarray 面向数值计算的数组在C11中才支持 支持很多数值数组操作如求数组总和、最大数、最小数等。 需要头文件 valarray 支持 #include iostream
#include valarray
using namespace std;int main()
{valarrayint a;//长度为0valarraydouble g(10);//长度为10valarrayint hh(a);hh a;valarrayfloat h(3.14, 10);//长度为10每个元素为3.14int days[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };valarrayint b(days, 5);//长度为5,用数组初始化valarraycout b.sum() endl;//总和cout b.max() endl;//最大值cout b.min() endl;//最小值return 0;
}五、调用第三方库如Eigen中的 MatrixXf a(10,15);VectorXf b(30);下面我们重点谈一下array的用法。 Array 是一种大小固定的顺序容器。array 的申明 template class T, size_t N
class array; pre namecode classcpp#include iostream
#include array
using namespace std;int main ()
{//-----------------------------------------------//--这是1维数组arrayint,5 myarray{1,2,3,4,5};//-----------------------------------------------cout myarrayendl;for (size_t n0; nmyarray.size(); n){cout myarray[n] \t;}cout endl;//-----------------------------------------------//当然也可以使用cout myarrayendl;for (size_t n0; nmyarray.size(); n){cout myarray.at(n) \t;}cout endl;//-----------------------------------------------//--这是2维数组,共3行2列arrayarrayint,2,3 myarray2D{1,2,3,4,5,6};//-----------------------------------------------cout myarray2Dendl;for (size_t m0; mmyarray2D.size(); m){for (size_t n0; nmyarray2D[m].size(); n){ cout myarray2D[m][n] \t;} cout endl; }cout endl;//-----------------------------------------------return 0;
}下面我们将介绍array的几个函数 // ‘[]’ 操作
#include iostream
#include arrayint main()
{std::arrayint, 10 myarray;unsigned int i;// assign some values:for (i 0; i 10; i) myarray[i] i * 10;// print contentstd::cout myarray contains:;for (int i : myarray)std::cout i;std::cout std::endl;return 0;
}结果 myarray contains: 0 10 20 30 40 50 60 70 80 90
请按任意键继续. . .// data 成员函数返回指向array第一个元素的指针
#include iostream
#include cstring
#include arrayint main()
{const char* cstr Test string;std::arraychar, 12 charray;memcpy(charray.data(), cstr, 12);std::cout charray.data() std::endl;return 0;
}结果 Test string
请按任意键继续. . . // fill 函数设置array内部的所有元素为指定值
#include iostream
#include arrayint main() {std::arrayint, 6 myarray;myarray.fill(5);std::cout myarray contains:;for (int x : myarray) { std::cout x; }std::cout std::endl;return 0;
}结果 myarray contains: 5 5 5 5 5 5
请按任意键继续. . .
// swap 函数交换两个array的内容注意两个array必须是相同类型相同大小
#include iostream
#include arrayint main()
{std::arrayint, 5 first { 10, 20, 30, 40, 50 };std::arrayint, 5 second { 11, 22, 33, 44, 55 };first.swap(second);std::cout first:;for (int x : first) std::cout x;std::cout std::endl;std::cout second:;for (int x : second) std::cout x;std::cout std::endl;return 0;
}结果 first: 11 22 33 44 55
second: 10 20 30 40 50
请按任意键继续. . .下面我们再说说以上array、vector、valarray的区别。 本质上vector与valarray是相同的基本上将vector换成valarray即可。无非是valarray侧重于数值运算因此增加了max,min,sum等函数。 而array与内置数组很接近它的个数是事先给定的不能更改。只不过是array更容易操作而已也不用管理内存。 比如我们想要动态创建二维数组vector可以但array不可以。 // swap 函数交换两个array的内容注意两个array必须是相同类型相同大小
#include iostream
#include array
#include vector
using namespace std;
int main()
{int m 5, n 6;std::array arrayint, 5, 6 a ;vectorvector int ivec;ivec.resize(m, vectorint(n));return 0;
}当我们将
std::array arrayint, 5, 6 a ;换成 std::array arrayint, m, n a ;出错。