您当前的位置: 首页 >  ar

txwtech

暂无认证

  • 2浏览

    0关注

    813博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

cb37a_c++_STL_算法_复制元素copy_copy_backward

txwtech 发布时间:2020-02-22 17:29:54 ,浏览量:2

cb37a-_c++_STL_算法_复制元素copy_copy_backward

copy(),同一个容器内部区间的拷贝,或者容器与容器之间的拷贝 copy_backward()//向后copy

注意: 1.没有copy_if算法,可以使用remove_copy_if()算法 2.复制过程中要逆转元素次序,使用reverse_copy()算法 3.把容器内所有元素赋值给另一个容器,要使用赋值操作符或者容器的assign()成员函数 4.复制工程中删除某些元素,使用remove_copy()和remove_copy_if()算法 5.复制中改变元素,使用transform()或者replace_copy()算法

STL算法-修改性算法 for_each() copy() copy_backward() transform() merge() swap_ranges() fill() fill_n()

generate() generate_n() replace() replace_if() replace_copy() replace_copy_if()

--------------------------- Microsoft Visual C++ Runtime Library --------------------------- Debug Assertion Failed!

Program: D:\Users\txwtech\projects\cb37a\Debug\cb37a.exe File: d:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.16.27023\include\vector Line: 94

Expression: can't decrement vector iterator before begin

For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

--------------------------- 中止(A)   重试(R)   忽略(I) ---------------------------

copy_backward(ilist.begin(), ilist.end(), ivec.begin()); copy_backward的最后一个参数需要从最后往前面拷贝数据,所以应该是ivec.end().

Expression: can't decrement vector iterator before begin 意思就是指针溢出了,ivec.begin()之前的数据,就超出范围。  copy_backward是从ivec.end()的前一个数开始copy. ivec.end()是指向最后一个的下一个。

--------------------------- Microsoft Visual C++ Runtime Library --------------------------- Debug Assertion Failed!

Program: D:\Users\txwtech\projects\cb37a\Debug\cb37a.exe File: d:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.16.27023\include\list Line: 187

Expression: cannot dereference end list iterator

For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

--------------------------- 中止(A)   重试(R)   忽略(I) --------------------------- Expression: cannot dereference end list iterator,空的容器就会出问题。 使用list迭代器,先定义容量。 比如:list ilist(20);//默认20个0, copy(ivec.begin(), ivec.end(), ilist2.begin()); copy到ilist必须要保证ilist有足够的空间。 或者使用back_inserter copy(ivec.begin(), ivec.end(), back_inserter(ilist));//这样就不用考虑容器容量问题

rror C2065: “ostream_iterator”: 未声明的标识符,需要包含:#include  

/*cb37a-_c++_STL_算法_复制元素copy_copy_backward

copy(),同一个容器内部区间的拷贝,或者容器与容器之间的拷贝
copy_backward()//向后copy

注意:
1.没有copy_if算法,可以使用remove_copy_if()算法
2.复制过程中要逆转元素次序,使用reverse_copy()算法
3.把容器内所有元素赋值给另一个容器,要使用赋值操作符或者容器的assign()成员函数
4.复制工程中删除某些元素,使用remove_copy()和remove_copy_if()算法
5.复制中改变元素,使用transform()或者replace_copy()算法

STL算法-修改性算法
for_each()
copy()
copy_backward()
transform()
merge()
swap_ranges()
fill()
fill_n()

generate()
generate_n()
replace()
replace_if()
replace_copy()
replace_copy_if()



---------------------------
Microsoft Visual C++ Runtime Library
---------------------------
Debug Assertion Failed!

Program: D:\Users\txwtech\projects\cb37a\Debug\cb37a.exe
File: d:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.16.27023\include\vector
Line: 94

Expression: can't decrement vector iterator before begin

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

---------------------------
中止(A)   重试(R)   忽略(I)
---------------------------

copy_backward(ilist.begin(), ilist.end(), ivec.begin());
copy_backward的最后一个参数需要从最后往前面拷贝数据,所以应该是ivec.end().

Expression: can't decrement vector iterator before begin
意思就是指针溢出了,ivec.begin()之前的数据,就超出范围。 
copy_backward是从ivec.end()的前一个数开始copy. ivec.end()是指向最后一个的下一个。



---------------------------
Microsoft Visual C++ Runtime Library
---------------------------
Debug Assertion Failed!

Program: D:\Users\txwtech\projects\cb37a\Debug\cb37a.exe
File: d:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.16.27023\include\list
Line: 187

Expression: cannot dereference end list iterator

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

---------------------------
中止(A)   重试(R)   忽略(I)
---------------------------
Expression: cannot dereference end list iterator,空的容器就会出问题。
使用list迭代器,先定义容量。
比如:list ilist(20);//默认20个0,
copy(ivec.begin(), ivec.end(), ilist2.begin());
copy到ilist必须要保证ilist有足够的空间。
或者使用back_inserter
copy(ivec.begin(), ivec.end(), back_inserter(ilist));//这样就不用考虑容器容量问题

rror C2065: “ostream_iterator”: 未声明的标识符,需要包含:#include 

*/

#include 
#include 
#include 
#include 
#include 


using namespace std;

int main()
{
	list ilist;
	for (int i = 0; i < 10; ++i)
		ilist.push_back(i);
	for (list::iterator iter = ilist.begin(); iter != ilist.end(); ++iter)
		cout             
关注
打赏
1665060526
查看更多评论
0.0596s