小编ced*_*usx的帖子

我可以创建具有指定长度但没有初始化的C++字符串/向量吗?

我需要创建一个string/ vector.我知道应该多久,但是,我想稍后写一些正确的东西.我可以使用指定的长度创建它,但没有任何初始化(既不显式也不隐式),就像malloc所做的那样?因为在阅读之前我会正确地写入它,所以在构造时初始化它将是浪费时间.

我希望在创建矢量之后可以用任意顺序编写,比如

vector<int> v(10); // Some magic to create v with 10 of uninitialized ints
v[6] = 1;
v[3] = 2;
...
Run Code Online (Sandbox Code Playgroud)

看似那是不可能的.

c++ string vector

4
推荐指数
3
解决办法
640
查看次数

为什么这个自定义比较器在构造std :: priority_queue时失败,而它适用于std :: sort?

比较器comp定义如下.它工作正常std::sort,但无法在构造函数中编译std::priority_queue.问题是什么?谢谢.

#include <vector>
#include <queue>
#include <algorithm>
using namespace std;

bool comp(int a, int b) { return a > b; }

int main()
{
    vector<int> vec = {4, 2, 1, 3};
    sort(vec.begin(), vec.end(), comp); // OK
    priority_queue<int> q1(less<int>(), vec); // OK
    priority_queue<int> q2(comp, vec); // Fail
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误信息:

error: no matching function for call to 'std::priority_queue<int>::priority_queue(bool (&)(int, int), std::vector<int>&)'
  priority_queue<int> q2(comp, vec);
                                  ^
Run Code Online (Sandbox Code Playgroud)

c++

4
推荐指数
1
解决办法
126
查看次数

标签 统计

c++ ×2

string ×1

vector ×1