c++vector怎么用
Posted wpyshf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++vector怎么用相关的知识,希望对你有一定的参考价值。
ANSWER
C++中的vector是一个能够存放任意类型的动态数组,能够增加和压缩数据,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。以下是使用vector的详细步骤和注意事项:
头文件
在使用vector时,需要包含vector头文件
include
初始化
如果vector的元素类型是int,默认初始化为0;如果vector元素类型为string,则默认初始化为空字符串。
可以通过以下方式初始化vector
vector
vector
vector
vector
访问vector中的元素
可以通过下标访问vector中的元素
vector
cout << v1[0] << endl; // 输出1
可以通过迭代器访问vector中的元素
vector
for (auto it = v1.begin(); it != v1.end(); ++it)
cout << *it << endl;
在vector中添加元素
可以通过push_back()函数向vector中添加元素
vector
v1.push_back(4);
在vector中删除元素
可以通过pop_back()函数删除vector中的最后一个元素
vector
v1.pop_back();
可以通过erase()函数删除vector中的指定元素
vector
v1.erase(v1.begin() + 1); // 删除第二个元素
vector的内存自增长
vector的内存空间只会增长,不会减小
vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储
当vector的元素数量超过其容量时,vector会重新分配内存,将原有元素复制到新的内存中
这个过程可能会很耗时,因此在需要对vector进行大量操作时,可以使用reserve()函数提前预分配内存
vector
v1.reserve(100); // 预分配100个元素的内存空间
vector的优缺点
优点
vector是一个动态数组,可以根据需要增加或压缩数据
vector的元素以连续方式存放,可以快速访问元素
vector提供了多种操作函数,方便对元素进行添加、删除、排序等操作
缺点
当vector的元素数量超过其容量时,vector会重新分配内存,将原有元素复制到新的内存中,这个过程可能会很耗时
在vector中插入或删除元素时,可能会导致vector中其他元素的位置发生改变,影响程序的运行效率
c++用sort对vector排序问题
#include<string>
#include<algorithm>
#include <vector>
using namespace std;
vector<string> a;
int n = 7;
bool compare(string a, string b)
for(int i = 0; i < n - 1; ++ i)
if(a[i] < b[i])
return true;
return false;
int main()
a.push_back("+-+--+");
a.push_back("-+-+--");
a.push_back("- ++ ");
a.push_back("- ++++");
sort(a.begin(), a.end(), compare);
return 0;
运行时错误,请问怎么回事。。。
就是sort那里中断了,我的是VS2010,出错信息是在 a[i] < b[i] 那里,无效的运算符 < ,我是想按照ASCII码大小来比较string中的每一位
或者直接 通过string 里面重载<
#include<string>
#include<algorithm>
#include <vector>
using namespace std;
vector<string> a;
int n = 7;
bool compare(string a, string b)
if(a<b)
return true;
return false;
int main()
a.push_back("+-+--+");
a.push_back("-+-+--");
a.push_back("- ++ ");
a.push_back("- ++++");
sort(a.begin(), a.end(), compare);
return 0;
参考技术A 应该是字符串长度不够,导致越界,直接用string的compare函数即可
return a.compare(b); 参考技术B 我在我的电脑上编译执行了,程序没有错,所以应该是你的电脑环境有问题。
你可以单步调试你的程序,看是哪一行出错了。追问
就是sort那里中断了,我的是VS2010,出错信息是在 a[i] < b[i] 那里,无效的运算符 < ,我是想按照ASCII码大小来比较string中的每一位
追答我搜看了一下,sort你要传递一个函数给他,但是这个函数不是普通的函数(function),而是仿函数(functor),仿函数是C++编程里的一个概念,就是说,一个类,它内部重载了小括号运算符,就称为仿函数。
建议你搜一下 STL sort 中的比较函数 ,看看别人怎么写的仿函数。
以上是关于c++vector怎么用的主要内容,如果未能解决你的问题,请参考以下文章