实战c++中的vector系列--creating vector of local structure、vector of structs initialization
来源:互联网 发布:unix编程艺术 pdf 编辑:程序博客网 时间:2024/06/05 16:29
之前一直没有使用过vector<struct>,现在就写一个简短的代码:
#include <vector>#include <iostream>int main() { struct st { int a; }; std::vector<st> v; v.resize(4); for (std::vector<st>::size_type i = 0; i < v.size(); i++) { v.operator[](i).a = i + 1; // v[i].a = i+1; } for (int i = 0; i < v.size(); i++) { std::cout << v[i].a << std::endl; }}
用VS2015编译成功,运行结果:
1
2
3
4
但是,这是C++11之后才允许的,之前编译器并不允许你写这样的语法,不允许vector容器内放local structure。
更进一步,如果struct里面有好几个字段呢?
#include<iostream>#include<string>#include<vector>using namespace std;struct subject { string name; int marks; int credits;};int main() { vector<subject> sub; //Push back new subject created with default constructor. sub.push_back(subject()); //Vector now has 1 element @ index 0, so modify it. sub[0].name = "english"; //Add a new element if you want another: sub.push_back(subject()); //Modify its name and marks. sub[1].name = "math"; sub[1].marks = 90; sub.push_back({ "Sport", 70, 0 }); sub.resize(8); //sub.emplace_back("Sport", 70, 0 ); for (int i = 0; i < sub.size(); i++) { std::cout << sub[i].name << std::endl; }}
但是上面的做法不好,我们应该先构造对象,后进行push_back 也许更加明智。
subject subObj;
subObj.name = s1;
sub.push_back(subObj);
这个就牵扯到一个问题,为什么不使用emplace_back来替代push_back呢,这也是我们接下来讨论 话题。
1 0
- 实战c++中的vector系列--creating vector of local structure、vector of structs initialization
- Initialization of Vector
- implementation of Vector (using C++)
- 实战c++中的vector系列--使用vector构造二维数组
- 实战c++中的vector系列--vector的一些异常
- Rules of vector
- bug of vector
- Calculation of Vector Similarity
- usage of vector
- abort remove_if of vector
- 实战c++中的vector系列--vector<unique_ptr<>>赋值给vector<unique_ptr<>>
- vector subscript out of range
- vector subscript out of range .
- vector subscript out of range
- DRM:Initialization vector
- 实战c++中的vector系列--vector的遍历(stl算法、vector迭代器(不要在循环中判断不等于end())、operator[])
- vector
- vector
- Android实战 - 音心播放器 (优化Service退出,按两下退出应用实现)
- 创建版本库
- fastcgi协议分析与实例
- Unity Shader入门介绍
- VBA中Dictionary对象使用小结
- 实战c++中的vector系列--creating vector of local structure、vector of structs initialization
- VBA中dim,static和public,private的区别
- 从程序员的角度看产品经理的逻辑与设计能力
- Git 版本回退/工作区和暂存区
- windows安装mactype启用mac字体渲染
- C++ Primer(十五) 函数
- Daemon守护线程让finally里面的语句不能执行
- Emmagee(二)-软件启动时间
- Android应用程序开发以及背后的设计思想深度剖析