std::vector a;
std::vector b;
a = b; //error
这里只是举个例子,如果vector中套了好几层东西 里面有个const, 看报错 想不到是这个原因
为啥这样加个const 就报错呢??
和vector 有关系?
其实没关系
看一个例子 里面就能理解了
命名就是瞎的键盘了 凑合看吧
明白了吧, 你写了const 就不能赋值了,
为啥拷贝构造可以呢?
因为使用了初始化列表 如果也是用赋值的形式 也是报错的
知识 +1 ,你学到了吗?
使用
vector
,要添加其头文件#include<
vector
>。
1.
vector
的初始化及
赋值
,比如:
std
::
vector
<
int
> nVec; // 空对象
std
::
vector
<
int
> nVec(5,-1); // 创建了一个包含5个
元素
且值为-1的
vector
std
::
vector
<
std
...
template <class T,class Alloc = allocator <T> > class
vector
; //通用模板
vector
是表示可以改变大小的数组的序列
容器
。
就像数组一样,
vector
使用连续存储空间存储
元素
,这意味着它们的
元素
也可以使用指向其
元素
的指针进行偏移来访问,并与数组一样高效。但与数组不同的是, v.
初学
C++
,我试着写一个贪吃蛇游戏,代码如下:#include#include #include #include #include#includeusing namespace
std
;class Snake{friend void displaySnake(Snake &s);public:using ssbody = pair, string>;Snake() = defaul...
const
vector
vec(10)
是不是指
const
是针对
vector
的?也就是说
vector
的大小不能变了但是里边
元素
的值可以改变?
如果要定义一个保存
const
int
对象的
vector
是不是这样定义:
vector
vec(10)
const
vector
vec(10)
vector
vec(10)
分别对应的迭代器是什么?
std
::
vector
v1{42}; //
vector
<
int
>
std
::
vector
v2{v1}; //
vector
<
int
> not
vector
<
vector
<
int
>>
std
::
vector
v3 = v1; //
vector
<
int
>
#include <
vector
>
#include <type_traits>
template <typename ...
void split(
const
std
::string &delimiters,
const
std
::string &source,
std
::
vector
<
std
::string> &result) {
size_t prev_pos = 0, pos = 0;
result.resize(0);
pos = source.find_first_of(delimiters, po
今天在写
c++
程序时遇到了一个
问题
,声明了一个
vector
对象
std
::
vector
<
const
std
::string> str_vec;结果程序
编译
报错:
此错误主要是
vector
中声明了
const
类型,此处
vector
<T>中的T应该是拷贝
赋值
的(CopyAssignable),因此不能使用
const
类型。以下代码则会报上述错误#include <iostream>
2 #inc
插入
元素
到
容器
中的指定位置
// 在 pos 前插入 value
iterator insert( iterator pos,
const
T& value ); (
C++
11 前)
iterator insert(
const
_iterator pos,
const
T& value ); (
C++
11 起)
iterator insert(
const
_iterator pos, T&& value ); (
C++
11 起)
//在 pos 前插入