标签: std-pair

安全修改std :: pair <U,V> ::在对向量中首先?

我目前正在研究DNA数据库类,我目前将数据库中的每一行与匹配分数(基于编辑距离)和实际DNA序列本身相关联,在迭代循环中首先以这种方式进行修改是否安全?

typedef std::pair<int, DnaDatabaseRow> DnaPairT;
typedef std::vector<DnaPairT>          DnaDatabaseT;

// ....

for(DnaDatabaseT::iterator it = database.begin();
    it != database.end(); it++)
{
    int score = it->second.query(query);
    it->first = score;
}
Run Code Online (Sandbox Code Playgroud)

我这样做的原因是我可以稍后按分数对它们进行排序.我已经尝试过地图并收到有关首先修改的编译错误,但有没有比这更好的方法来存储所有信息以便以后进行排序?

c++ sorting std-pair

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

C++在对向量中存储字符串的副本

我在一个定义为的类中有一个私有属性vector<pair<char *, int> > data;.我用这个向量添加数据data.push_back(make_pair(p, r));.后来当我从矢量中获取数据时,我得到了p值的坏数据.返回的数据就像??U3.我认为这是因为存储了一个指向char数组的指针.我将如何在矢量中存储实际副本.如果它有助于char数组永远不会超过255个字符+ 1为null终止.

c++ vector cstring std-pair

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

c ++中std :: pair数组的问题?

我今天正在玩一些代码,我想到了在数组中放入一堆对,但我无法让它工作.这是代码:

#include <utility>
#include <iostream>
std::pair<double,double> * pairArr;
int main(){
   pairArr = new std::pair<double,double> [3];   //creating the array

   pairArr [0] = make_pair(1.0,1.2);             //Filling arbitrary numbers
   pairArr [1] = make_pair(0.2,1.4);
   pairArr [2] = make_pair(0.8,1.3);

   std::cout<< pair[0].first << pair[1].second << pair[2].first   //Output
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

这个程序的输出并不是我输入的全部内容.

c++ arrays data-structures std-pair

1
推荐指数
1
解决办法
2万
查看次数

sort运算符不能在C++中工作

我在使用sort运算符时遇到了麻烦,因为我只需要对该对中的第一个元素进行排序.代码很简单但不起作用:

运营商的定义如下:

struct sort_pred {
    bool operator()(const CromosomaIndex &left, const CromosomaIndex &right) { 
        return left.first < right.first;
    }
};
Run Code Online (Sandbox Code Playgroud)

而且类型是

typedef std::pair<double,int> CromosomaIndex;
Run Code Online (Sandbox Code Playgroud)

我正在尝试像这样排序数组:

CromosomaIndex nuevo[2];
nuevo[0].first = 0.01;
nuevo[0].second = 0;
nuevo[1].first = 0.009;
nuevo[1].second = 1;
int elements = sizeof(nuevo) / sizeof(nuevo[0]);
sort(nuevo, nuevo+ elements, sort_pred());
Run Code Online (Sandbox Code Playgroud)

但问题是这是排序第一个和第二个元素,我只想对第一个元素进行排序并保持第二个元素是固定的.有什么想法吗?

c++ sorting std-pair

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

如何在C++中使用自定义比较器创建std :: set?

如何创建一组对,其中的元素(对)使用自定义bool函数进行排序?我写

set <pair<int,int>,compare> myset;
Run Code Online (Sandbox Code Playgroud)

并得到错误:参数2处的类型/值不匹配,预期类型,得到"比较"

我把"比较"定义为

bool compare(pair <int,int> g1, pair <int,int> g2)
{
    return (g1.second-g1.first > g2.second-g2.first);
}
Run Code Online (Sandbox Code Playgroud)

而且当然

#include <vector>
#include <set>
Run Code Online (Sandbox Code Playgroud)

c++ set comparator std-pair

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

在std :: pair的std :: vector中查找最小值和最大值

我试图在向量中找出最小值/最大值 pair<int, std::string>

我的代码:

#include <iostream>
#include <vector>
#include <string>

int main()
{
    std::vector<std::pair<int, std::string>> pairs;
    pairs = {{6,"a"}, {4,"b"}, {5,"c"}, {8,"d"}, {7,"e"}};

    int min = 0, max = 0;

    //how to find out min/max?

    std::cout << "Minimum Number : " << min << '\n';
    std::cout << "Maximum Number : " << max << '\n';
}
Run Code Online (Sandbox Code Playgroud)

我想要的结果:

Minimum Value : 4
Maximum Value : 8
Program ended with exit code: 0
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到我想要的结果?


编辑:

这是我迄今为止的解决方案.

std::sort(pairs.begin(), pairs.end());
min = pairs[0].first;
max …
Run Code Online (Sandbox Code Playgroud)

c++ vector max min std-pair

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

make_pair和大括号{}之间的区别,以便在C ++中分配对?

我没有找到回答这个问题的人,以下内容之间是否有区别:

v.push_back({x, y});
Run Code Online (Sandbox Code Playgroud)

和:

v.push_back(make_pair(x, y));
Run Code Online (Sandbox Code Playgroud)

假设v是这样声明的:

vector<pair<int,int> > v;
Run Code Online (Sandbox Code Playgroud)

c++ std-pair

1
推荐指数
3
解决办法
917
查看次数

if语句如何简化?

我正在使用CLion IDE编码我的C ++项目。有时候,IDE会比我更聪明,并给我一些建议。在代码检查过程中(CLion),我遇到一个简单的问题。它说以下代码可以简化,即使我认为这是我能想到的最简单的形式:

代码:

    if (node.first >= 0 && node.first <= 45 &&
    node.second >= 0 && node.second <= 30)
    return true;
    else
    return false;
Run Code Online (Sandbox Code Playgroud)

假设节点的类型 std::pair<int, int>

我从CLion IDE获得的建议如下:

代码检查注释:

Inspection info: This inspection finds the part of the code that can be simplified, e.g. constant conditions, identical if branches, pointless boolean expressions, etc.
Run Code Online (Sandbox Code Playgroud)

您认为这可以进一步简化吗?

c++ if-statement code-inspection conditional-statements std-pair

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

检查对是否为空或未初始化

 int main() {

   pair<int, int> res;
   // check here pair is empty ?
   // res = make_pair(1 , 2);


   return 0;
}
Run Code Online (Sandbox Code Playgroud)

在以上代码段中,检查一对是否已初始化的理想方法是什么?

编辑:正如下面的一些答案所指出的,在这里使用单词“未初始化”是错误的,更具体地说,我该如何检查该值是否已显式设置(默认构造函数除外)

c++ std-pair

1
推荐指数
3
解决办法
125
查看次数

值是按引用还是按值存储在 std::pair&lt;&gt; 中?

所以我有一个类myClass和两个私有变量,假设 i,j 和一个类方法myMethod如下-

std::pair<int, int > myClass::myMethod(void)
{
    std::pair<int, int> Pair;
    this->i = 100;
    this->j = 50;
    Pair.first = this->i;
    Pair.second = this->j;
    return Pair;
}
Run Code Online (Sandbox Code Playgroud)

我从另一个函数调用该方法如下 -

std::pair<int, int> receivedPair = myClass.myMethod();
Run Code Online (Sandbox Code Playgroud)

所以如果我编辑receivedPair让我们说

receivedPair.first = 200;
Run Code Online (Sandbox Code Playgroud)

Class 变量i也会变成等于 200 吗?我基本上需要通过引用串联的几个函数来传递变量,以便更新相同的内存位置...... TIA

c++ std-pair c++17

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