草庐IT

copy_pointer

全部标签

c++ - 为什么 back_insert_iterator/front_insert_iterator/insert_iterator 的 value_type/difference_type/pointer/reference 都是 void?

在我的项目中,我想将流拆分为一些给定类型的值,所以我实现了一个模板函数templateTOutputIterSplitSpace(std::istream&IS,TOutputIterresult){TElemelem;while(IS>>elem){*result=elem;++result;}returnresult;}我认为这很尴尬,因为我必须在调用时明确给出TElem的类型。例如,我必须写:std::vectorv;SplitSpace(std::cin,back_inserter(v));//IwanttoittobeSplitSpace(std::cin,back_inse

c++ - 为什么 back_insert_iterator/front_insert_iterator/insert_iterator 的 value_type/difference_type/pointer/reference 都是 void?

在我的项目中,我想将流拆分为一些给定类型的值,所以我实现了一个模板函数templateTOutputIterSplitSpace(std::istream&IS,TOutputIterresult){TElemelem;while(IS>>elem){*result=elem;++result;}returnresult;}我认为这很尴尬,因为我必须在调用时明确给出TElem的类型。例如,我必须写:std::vectorv;SplitSpace(std::cin,back_inserter(v));//IwanttoittobeSplitSpace(std::cin,back_inse

c++ - std::copy 是否处理重叠范围?

将数据从一个范围复制到另一个范围时,您必须小心源范围和目标范围之间是否存在部分重叠。如果目标范围的开头与源范围的尾部重叠,则纯顺序拷贝将使数据出现乱码。C运行时库除了memcpy之外还有memmove来处理此类重叠问题。我假设std::copy像memcpy一样工作,因为它不考虑源区域和目标区域之间的重叠。如果您尝试使用std::copy在std::vector中“向下”移动对象,则会损坏数据。是否有类似memmove的STL算法来处理这种情况?还是我应该使用反向迭代器自己动手? 最佳答案 如果输出范围的开头与输入范围重叠,则不处理

c++ - std::copy 是否处理重叠范围?

将数据从一个范围复制到另一个范围时,您必须小心源范围和目标范围之间是否存在部分重叠。如果目标范围的开头与源范围的尾部重叠,则纯顺序拷贝将使数据出现乱码。C运行时库除了memcpy之外还有memmove来处理此类重叠问题。我假设std::copy像memcpy一样工作,因为它不考虑源区域和目标区域之间的重叠。如果您尝试使用std::copy在std::vector中“向下”移动对象,则会损坏数据。是否有类似memmove的STL算法来处理这种情况?还是我应该使用反向迭代器自己动手? 最佳答案 如果输出范围的开头与输入范围重叠,则不处理

c++ - 我不明白为什么这个函数 "returns a pointer from the list"

我正在读的书,IntroductiontoDataStructureswithLinkedLists(Presentation21),有2个链表示例。这是第一个:EnemySpaceShip*getNewEnemy(){EnemySpaceShip*p_ship=newEnemySpaceShip;p_ship->x_coordinate=0;p_ship->y_coordinate=0;p_ship->weapon_power=20;p_ship->p_next_enemy=p_enemies;p_enemies=p_ship;returnp_ship;}链表的第二个例子是这个:En

c++ - 我不明白为什么这个函数 "returns a pointer from the list"

我正在读的书,IntroductiontoDataStructureswithLinkedLists(Presentation21),有2个链表示例。这是第一个:EnemySpaceShip*getNewEnemy(){EnemySpaceShip*p_ship=newEnemySpaceShip;p_ship->x_coordinate=0;p_ship->y_coordinate=0;p_ship->weapon_power=20;p_ship->p_next_enemy=p_enemies;p_enemies=p_ship;returnp_ship;}链表的第二个例子是这个:En

c++ - is_trivially_copyable 和 is_trivially_copy_constructible 有什么区别?

这些何时会给出不同的答案,这种差异何时有用(如果有的话)? 最佳答案 前者测试triviallycopyable属性,简而言之,这意味着该类型是memcpy-安全的。Atriviallycopyableclassisaclassthat:—hasnonon-trivialcopyconstructors(12.8),—hasnonon-trivialmoveconstructors(12.8),—hasnonon-trivialcopyassignmentoperators(13.5.3,12.8),—hasnonon-trivia

c++ - is_trivially_copyable 和 is_trivially_copy_constructible 有什么区别?

这些何时会给出不同的答案,这种差异何时有用(如果有的话)? 最佳答案 前者测试triviallycopyable属性,简而言之,这意味着该类型是memcpy-安全的。Atriviallycopyableclassisaclassthat:—hasnonon-trivialcopyconstructors(12.8),—hasnonon-trivialmoveconstructors(12.8),—hasnonon-trivialcopyassignmentoperators(13.5.3,12.8),—hasnonon-trivia

c++ - 用 std::istream_iterator 限制 std::copy 的范围

我构建了一个最小的工作示例来展示我在使用STL迭代器时遇到的问题。我正在使用istream_iterator从std::istream:读取floatss(或其他类型)#include#include#includeintmain(){floatvalues[4];std::copy(std::istream_iterator(std::cin),std::istream_iterator(),values);std::cout这会读取所有可能的floatss,直到EOF进入values,它的大小是固定的,4,所以现在显然我想限制范围以避免溢出和准确/最多读取4个值。使用更多“正常”迭

c++ - 用 std::istream_iterator 限制 std::copy 的范围

我构建了一个最小的工作示例来展示我在使用STL迭代器时遇到的问题。我正在使用istream_iterator从std::istream:读取floatss(或其他类型)#include#include#includeintmain(){floatvalues[4];std::copy(std::istream_iterator(std::cin),std::istream_iterator(),values);std::cout这会读取所有可能的floatss,直到EOF进入values,它的大小是固定的,4,所以现在显然我想限制范围以避免溢出和准确/最多读取4个值。使用更多“正常”迭