精华内容
下载资源
问答
  • c++中vector的 = 与 assign 详解 两个都是赋值操作,结论是均是深拷贝,直接看代码 先研究 较大空间 = 较小空间 时的结果 vector<int> v1(1, 5); vector<int> v2(2, 6); vector<int> v3(3, ...

    c++中vector的 = 与 assign 详解

    • 两个都是赋值操作,结论是均是深拷贝,直接看代码

    • 先研究 较大空间 = 较小空间 时的结果

    vector<int> v1(1, 5);
    vector<int> v2(2, 6);
    vector<int> v3(3, 7);
    vector<int> v4(4, 8);
    cout << "v1.addr: " << &v1 << "\nv2.addr: " << &v2 << endl;
    cout << "v3.addr: " << &v3 << "\nv4.addr: " << &v4 << endl;
    v2 = v1;
    cout << "v1-size: " << v1.size() << " v1.addr: " << &v1 << endl;
    cout << "v2-size: " << v2.size() << " v2.addr: " << &v2 << endl;
    
    v4.assign(v3.begin(), v3.end());
    cout << "v3-size: " << v3.size() << " v3.addr: " << &v3 << endl;
    cout << "v4-size: " << v4.size() << " v4.addr: " << &v4 << endl;
    

    在这里插入图片描述

    发现 vector 的 =assign完全等效
    并且都是深拷贝:既没有改变指针指向,也没有清除之前的被操作变量

    • 再研究一下 较小空间 = 较大空间 时的结果
    vector<int> v5(6);
    vector<int> v6(66);
    cout << "赋值前:" << endl;
    cout << "v5-size: " << v5.size() << " v5.addr: " << &v5 << endl;
    cout << "v6-size: " << v6.size() << " v6.addr: " << &v6 << endl;
    v5 = v6;
    cout << "赋值后:" << endl;
    cout << "v5-size: " << v5.size() << " v5.addr: " << &v5 << endl;
    cout << "v6-size: " << v6.size() << " v6.addr: " << &v6 << endl;
    

    在这里插入图片描述
    很离谱,刚开始以为是v6数量给小了,然后试了下666666结果还是指针指向没有变,暂时不清楚如何实现的,但是 =assign 是完全等效的。

    更全知识点总结

    1. 更多vector知识总结
    展开全文
  • c++中vector的 = 与 assign的区别

    千次阅读 2020-01-08 11:00:50
    网上错误说法 vector<int> v1(3, 10); vector<int> v2(5, 4); vector<int>v3(6, 5);... vector<... v4.assign(v3.begin(), v3.end()); 第一种 v1.size() = 0; v2.size() = 3...

    网上错误说法

    	vector<int> v1(3, 10);
    	vector<int> v2(5, 4);
    	vector<int>v3(6, 5);
    	vector<int>v4(7, 8);
    	v2 = v1;
    	v4.assign(v3.begin(), v3.end());
    

    第一种

    v1.size() = 0;
    v2.size() = 3;

    第二种

    v2 只是改变了指针位置,指向v1

    实际测试结果:

    测试代码:

    	vector<int> v1(3, 10);
    	vector<int> v2(5, 4);
    	vector<int>v3(6, 5);
    	vector<int>v4(7, 8);
    	qDebug() << "v1.addr: " << &v1 << "\nv2.addr: " << &v2 << "\nv3.addr: " << &v3 << "\nv4.addr: " << &v4;
    	v2 = v1;
    	qDebug() << "V1-size: " << v1.size()<<"v1.addr: "<<&v1;
    	qDebug() << "v2-size: " << v2.size()<< "v2.addr: " << &v2;
    
    	v4.assign(v3.begin(), v3.end());
    	qDebug() << "V3-size: " << v3.size() << "v3.addr: " << &v3;
    	qDebug() << "v4-size: " << v4.size() << "v4.addr: " << &v4;
    

    测试结果:

    v1.addr:  0x4db3b2f3e0 
    v2.addr:  0x4db3b2f420 
    v3.addr:  0x4db3b2f3c0 
    v4.addr:  0x4db3b2f400
    V1-size:  3 v1.addr:  0x4db3b2f3e0
    v2-size:  3 v2.addr:  0x4db3b2f420
    V3-size:  6 v3.addr:  0x4db3b2f3c0
    v4-size:  6 v4.addr:  0x4db3b2f400
    

    结论:

    vector 的重载操作符 = 与 vector的 assign方法一样,都是深拷贝,
    即:既没有改变指针指向,也没有清除之前的被操作变量。

    展开全文
  • STL中vectorassign()函数 assign函数原型: void assign(const_iterator first,const_iterator last); void assign(size_type n,const T& x = T()); 功能:将区间 [first,last) 的元素赋值到当前的 vector ...

    STL中vector的assign()函数

    assign函数原型:

    void assign(const_iterator first,const_iterator last);
    void assign(size_type n,const T& x = T());
    

    功能:将区间 [first,last) 的元素赋值到当前的 vector 容器中,或者赋 n 个值为 x 的元素到 vector 容器中,并且清除掉 vector 容器中以前的内容。

    示例:

    #include <vector>
    #include <iostream>
    using namespace std;
    
    int main() {
     	vector<int> v1, v2, v3;
     	vector<int>::iterator iter;
     	v1.push_back(10);
     	v1.push_back(20);
     	v1.push_back(30);
     	v2.push_back(1);
     	v2.push_back(2);
        
     	cout << "v1 = " ;
     	for (iter = v1.begin(); iter != v1.end(); iter++)
      		cout << *iter << " ";
     	cout << endl;
        
    	cout << "v2 = ";
     	for (iter = v2.begin(); iter != v2.end(); iter++)
      		cout << *iter << " ";
     	cout << endl;
    	
        /*v2 = v1;
     	cout << "v2 = ";
     	for (iter = v2.begin(); iter != v2.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, 3) ;
     	cout << "v3 = ";
     	for (iter = v3.begin(); iter != v3.end(); iter++)
      		cout << *iter << " ";
     	cout << endl;
        
     	return 0;
    }
    
    展开全文
  • 第二个是把n个x赋值给调用者,即:赋 n 个值为 x 的元素到 vector 容器,并且清除掉 vector 容器以前的内容。 二、示例: #include #include using namespace std; int main() { vector<int> v1, v2, v3; ...

    参考:

    1. https://blog.csdn.net/qq_45893475/article/details/120250105
    2. https://blog.csdn.net/doubleintfloat/article/details/52280481?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link

    一、assign函数原型:

    void assign(const_iterator first,const_iterator last);
    void assign(size_type n,const T& x = T());
    

    功能:

    1. 第一个相当于拷贝函数,把first到last的值赋值给调用者,注意区间的闭合,即:将区间 [first,last) 的元素赋值到当前的 vector 容器中;
    2. 第二个是把n个x赋值给调用者,即:赋 n 个值为 x 的元素到 vector 容器中,并且清除掉 vector 容器中以前的内容。

    二、示例:

    #include <vector>
    #include <iostream>
    using namespace std;
    
    int main() {
     	vector<int> v1, v2, v3;
     	vector<int>::iterator iter;
     	v1.push_back(10);
     	v1.push_back(20);
     	v1.push_back(30);
     	v2.push_back(1);
     	v2.push_back(2);
        
     	cout << "v1 = " ;
     	for (iter = v1.begin(); iter != v1.end(); iter++)
      		cout << *iter << " ";
     	cout << endl;
        
    	cout << "v2 = ";
     	for (iter = v2.begin(); iter != v2.end(); iter++)
      		cout << *iter << " ";
     	cout << endl;
    	
        /*v2 = v1;
     	cout << "v2 = ";
     	for (iter = v2.begin(); iter != v2.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, 3) ;
     	cout << "v3 = ";
     	for (iter = v3.begin(); iter != v3.end(); iter++)
      		cout << *iter << " ";
     	cout << endl;
        
     	return 0;
    }
    
    #include<iostream>
    #include<vector>
    using namespace std;
    
    int main()
    {
    	vector<int>ls;
    	vector<int>ls1;
    
    	for(int i=0; i<20; ++i)
    	{
    		ls.push_back(i);
    	}
    	vector<int>::iterator lr = ls.begin();
    	for(; lr != ls.end(); ++lr)
    	{
    		cout<<*lr<<" ";
    	}
    	cout<<endl;
    	ls1.assign(ls.begin(),ls.begin()+9);
    
    	for(lr = ls1.begin(); lr !=ls1.end(); ++lr)
    	{
    		cout<<*lr<<" ";
    	}
    	cout<<endl;
    	
    	ls.assign(10,7);
    	for(lr = ls.begin(); lr !=ls.end(); ++lr)
    	{
    		cout<<*lr<<" ";
    	}
    	cout<<endl;
    	return 0;
    }
    
    输出结果:
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
    0 1 2 3 4 5 6 7 8
    7 7 7 7 7 7 7 7 7 7
    
    展开全文
  • STL库容器vector assign赋值函数 vector<int> v(10,0); int a[10]={1,2,3,4,5,6,7,8,9,10}; v.assign(a,a+10); // v.assign(&a[0],&a[10]); //都是将a[0]到a[9]整体赋到v v.assign(10,1); //将10...
  • STL里Vectorassign()函数用法

    万次阅读 多人点赞 2016-08-22 21:15:05
    vector里接触的第一个函数就是assign()函数原型是: 1:void assign(const_iterator first,const_iterator last); 2:void assign(size_type n,const T& x = T());第一个相当于个拷贝函数,把first到last的值...
  • vector 有个函数assign, 可以帮助执行赋值操作。 assign会清空你的容器。   assign函数: 函数原型: void assign(const_iterator first,const_iterator last); void assign(size_type n,const T&amp; x = ...
  • C++STL中vector容器 assign()函数的用法

    万次阅读 多人点赞 2012-11-09 15:55:17
    assign函数: 函数原型: void assign(const_iterator first,const_iterator last); void assign(size_type n,const T& x = T()); 功能: 将区间[first,last)的元素赋值到当前
  • /*vector里接触的第一个函数就是assign() //函数原型 1.void assign(const_iterator first,const_iterator last); 2.void assign(size_type n,const T&x=T()); //第一个相当于个拷贝函数,把first到last的...
  • c++向量assignGiven a vector and we have to assign copy it to another vector by... 给定一个向量,我们必须使用C ++vector.assign()将其复制到另一个向量。 Syntax of vector.assign() function: vector.a...
  • c ++ assign函数 C ++ vector :: assign()函数 (C++ vector::assign() function) vector::assign() is a library function of "vector" header, it is used to initialize a vector or assign content to a vector, ...
  • C++中vector容器 assign()用法

    万次阅读 2014-03-25 22:12:42
    assign函数: 函数原型: void assign(const_iterator first,const_iterator last);...将区间[first,last)的元素赋值到当前的vector容器,或者赋n个值为x的元素到vector容器,这个容器会清除掉vector容器以前的内
  • C++ vector::assign的使用

    2021-11-06 13:51:00
    一、assign函数介绍 ...将区间[first,last)的元素赋值到当前的vector容器,或者赋n个值为x的元素到vector容器,这个容器会清除掉vector容器以前的内容。 二、实例 int main(int argc, char* argv[]) {
  • vector_assign

    2019-05-08 00:18:59
    学习vector中assign // vector assign #include <iostream> #include <vector> using namespace std; int main () { //assignvector分配 vector<int> first; vector<int&...
  • vectorassign()

    2014-10-20 09:11:07
    #include void assign( size_type num, const TYPE& val ); void assign( input_...函数assign()将区间[start, end)的值或num个val的副本赋值给当前的vector. 此函数将销毁先前vector中的内容. 例如,
  • vector::assign()函数

    万次阅读 2018-04-28 14:30:14
    vector里很重要的一个函数 vector::assign() //用来构造一个vector的函数,类似于copy函数 函数原型是:  1:void assign(const_iterator first,const_iterator last); //两个指针,分别指向复制开始和结束的...
  • Vector::assign的使用

    万次阅读 2015-07-25 22:03:00
    Vector::assign的使用 1. assign(num1, num2) assign语句执行之前 执行语句intVec1.assign(4,10)之后 可以看到assign赋值方法,释放了原来的数据空间,并分配了新的数据空间, Assing(x, y) ...
  • 因为assign()函数会在赋值的时候调整原向量的size,而capacity保持不变。...Assign vector content Assigns new contents to the vector, replacing its current contents, and modifying its size accordingly.
  • vector::assign()是C++的STL,它通过替换旧元素为向量元素分配新值。如果需要,它也可以修改向量的大小。分配常量值的语法:vectorname.assign(int size, int value)Parameters:size-要分配的值数value-要分配给...
  • vectorassign

    2019-03-03 15:50:30
    #include &...vector&gt; using namespace std; int main() { int n; vector&lt;int&gt; a,b(1),c(1); a.push_back(1); a.push_back(2); a.push_back(3); b[0]=66; c[0]=84; b....
  • c++ vector(二) insert, assign

    千次阅读 2018-11-16 15:22:48
    vector&gt; #include&lt;iostream&gt; using namespace std; int main() { vector&lt;int&gt; v(3),v2; v[0]=2; //v[0]是第0个元素 v[1]=7; v[2]=9; //v=[2,7,9] v...
  • C++_vector操作

    万次阅读 多人点赞 2019-05-28 11:24:15
    vector说明: vector是向量类型,可以容纳许多类型的数据,因此也被称为容器 (可以理解为动态数组,是封装好了的类) vector头文件-vector vector初始化: 方式1. vector<int>a(10);//定义具有10个...
  • C++ STL vector assign用法

    2015-10-03 01:12:09
    原帖地址:... vector::assign //用来构造一个vector的函数,类似于copy函数 void assign( size_type _Count, const Type& _Val); //_Count指要构造的vector成员的个数, 
  • 之前博客《实战c++vector系列–构造、operator=和assign区别》写了关于assign()方法,其中有一条就是: replacing its current contents modifying its size accordingly 就是替换了vector中已经存在的元素。...
  • vectorassign分几部分数据

    千次阅读 2012-12-20 18:27:23
    // VectorPart.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include using namespace std; typedef unsigned int ...typedef std::vector CTuintArray; int _tmain(int ar
  • vector也许是实际过程使用最多的stl容器,看似简单,其实有很多技巧和陷阱。着重看一看vector的构造,暂时按照C++11:default (1) explicit vector (const allocator_type& alloc = allocator_type());fill (2) ...
  • vector assign的用法

    2020-05-18 00:05:58
    1. #include<iostream> #include<... vector<int> ve; int a[]={1,1,2}; ve.assign(a,a+3); for(int i=0;i<ve.size();i++){ cout<<ve[i]<<endl; } ve.assign
  • C++ vector的使用总结及常用vector操作

    千次阅读 多人点赞 2019-09-07 00:48:48
    一、介绍 C++ vector类为内置数组提供了一种替代表示,与string类一样 vector 类是随标准 C++引入的标准库的一部分,使用时需包含头文件: #include <...1. 我们向 vector 插入元素,而不...
  • std::vector<int> lqs1; 方法二:带一个参数 std::vector<int> lqs2(10); //10个默认值为0 方法三:带两个参数 std::vector<int> lqs3(10,1); //初始化10个值为1 方法四:通过已知的同类型 std...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,673
精华内容 13,469
关键字:

vector中的assign