C++/STL中 vector中对 “=”赋值运算符的支持

由于好奇STL中的vector 对于自定义数据类型的 “ = ”(赋值运算符的)支持,谢了一段简单的测试代码进行测试。

结果证明vector对于赋值预算符支持良好,但是对于动态分配的类构成的vector数组,

博主认为一定要重写析构函数与复制构造函数以及运算符重载“=”运算符(这是一条软件规则,详见博主测试),链接如下:

http://blog.csdn.net/u010003835/article/details/47314811

测试代码:

#include <iostream>
#include <vector>

using namespace std;

#pragma warning(disable:4996)

struct Point{
	int x;
	int y;
};

void  Print(vector<Point> &PointList){
	for (int i = 0; i < PointList.size(); i++){
		cout << PointList[i].x <<" "<< PointList[i].y << endl;
	}
	cout << endl << endl;
}

int main(){
	vector<Point> PointList1;
	vector<Point> PointList2;

	Point a;
	a.x = 1;
	a.y = 2;
	PointList1.push_back(a);

	a.x = 3;
	a.y = 2;
	PointList1.push_back(a);

	a.x = 4;
	a.y = 2;
	PointList1.push_back(a);

	Print(PointList1);

	cout << "test of  = operator (whole vector copy)" << endl;
	PointList2 = PointList1;
	Print(PointList2);

	cout << "test of = operator (part of the vector)" << endl;
	PointList2[1] = PointList1[2];
	PointList2[0] = PointList1[2];
	Print(PointList2);

	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-04 21:06:42

C++/STL中 vector中对 “=”赋值运算符的支持的相关文章

STL vector中的rbegin方法(5)

public member function <vector> std::vector::rbegin C++98 C++11 reverse_iterator rbegin() noexcept; const_reverse_iterator rbegin() const noexcept; Return reverse iterator to reverse beginning 返回一个反向的首元素. 例子: #include <iostream> #include <v

STL vector中的front方法(4)

public member function <vector> std::vector::front reference front(); const_reference front() const; Access first element 访问第一个元素 Returns a reference to the first element in the vector. 返回第一个元素的引用. Unlike member vector::begin, which returns an itera

[转]STL中vector转数组(实际是数组的指针)

感谢:http://topic.csdn.net/t/20050429/20/3976956.html 感谢:http://yzyanchao.blogbus.com/logs/47796444.html 不过那边是转载自<effective stl>. std::vector很方便,但有时调用的函数的参数规定是数组,需要将vector转为数组,另外开辟一个空间,将vector一项项复制过去代价过大,可用下面的方法. 给定一个 vector<int>   v;         表达

STL vector中的crbegin方法(7)

其实crbegin就相当于cbegin+rbegin. 关于这两个函数可以看我的上两篇博文. public member function <vector> std::vector::crbegin const_reverse_iterator crbegin() const noexcept; Return const_reverse_iterator to reverse beginning Returns a const_reverse_iterator pointing to the

C++的STL中vector内存分配方法的简单探索

STL中vector什么时候会自动分配内存,又是怎么分配的呢? 环境:Linux  CentOS 5.2 1.代码 #include <vector> #include <stdio.h> using namespace std; int main() { vector<int> x_vec; printf("data size : [%3d], mem size : [%3d]\n", x_vec.size(), x_vec.capacity())

C++ STL中vector(向量容器)使用简单介绍

原文:http://www.seacha.com/article.php/knowledge/cbase/2013/0903/2205.html C++ vector(向量容器)是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组,或者作为动态内存. 在创建一个vector 后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间大小可以预先指定也可以由vector 默认指定,这个大小即cap

STL中 vector 和 list 一些特性

STL中的vector特点是: 其容量在需要时可以自动分配,本质上是数组形式的存储方式.即在索引可以在常数时间内完成.缺点是在插入或者删除一项时,需要线性时间.但是在尾部插入或者删除,是常数时间的. STL的 list 是双向链表:如果知道位置,在其中进行插入和删除操作时,是常数时间的.索引则需要线性时间(和单链表一样). 以下是vector和list中常用的方法: int size() const  ;  返回容器内所有元素的个数. void  clear()  ;    删除容器中所有元素.

STL中vector的用法

vector应该是STL种最常用的容器了,可以当做数组来看待,只不过vector的元素更丰富,不仅仅是数据元素,还可以是结构体 1.vector的创建和初始化 vector <double> v;//创建一个double类型的vector vector <int> v2(5);//创建一个含有5个元素的int型vector,初始值默认为0 vector <int> v3(4,7);//创建一个含有4个元素的int型vector,初始值都为7 当然也可以通过在尾部添加元素

C++的STL在C#中的应用

这里主要讲几个重要的STL在C#中的应用:vector, map, hash_map, queue, set, stack, list. vector: 在C#中换成了list http://www.cnblogs.com/vhtt/archive/2009/12/05/1617835.html