我在一个定义为的类中有一个私有属性vector<pair<char *, int> > data;.我用这个向量添加数据data.push_back(make_pair(p, r));.后来当我从矢量中获取数据时,我得到了p值的坏数据.返回的数据就像??U3.我认为这是因为存储了一个指向char数组的指针.我将如何在矢量中存储实际副本.如果它有助于char数组永远不会超过255个字符+ 1为null终止.
所以我试着创建一个向量,其中元素是结构指针和int的对,我开始认为这可能是不可能的..
假设我有以下结构:
struct node{
string str;
int size;
node *child[3];
node(string str1):str(str1){ size = 0;}
};
Run Code Online (Sandbox Code Playgroud)
和矢量:
vector< pair<node*,int> > nodvector;
Run Code Online (Sandbox Code Playgroud)
然后我尝试创建一个新节点并将其放在向量中,显然它不起作用:
int main(){
node* nod1 = new node("HELLO");
node* nod2 = new node("WORLD");
nodevector.push_back(pair<nod1,3>);
delete nod1;
delete nod2;
}
Run Code Online (Sandbox Code Playgroud)
编译器咆哮着说:nod1不能出现在常量表达式错误中:模板参数1无效错误:模板struct std :: pair的模板参数列表中参数2的类型/值不匹配
这只是不可能的事吗?什么可以替代解决方案呢?您的意见将非常感谢!
我今天正在玩一些代码,我想到了在数组中放入一堆对,但我无法让它工作.这是代码:
#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 ++中对类的定义中有两个typedef.它们是为了什么?在代码中没有使用它们!
template <class T1, class T2> struct pair
{
typedef T1 first_type;
typedef T2 second_type;
T1 first;
T2 second;
pair() : first(T1()), second(T2()) {}
pair(const T1& x, const T2& y) : first(x), second(y) {}
template <class U, class V>
pair (const pair<U,V> &p) : first(p.first), second(p.second) { }
}
Run Code Online (Sandbox Code Playgroud) 我有一个Visual Studio 2008 C++应用程序,其中包含一个const char*[2]我想要转换为a的参数std::pair< std::string, std::string >.有一个简单的方法吗?
例如:
typedef std::pair< std::string, std::string > Group;
const char* a[ 2 ] = { "buzz", "foo" };
Group z = a; // ???
// a->first.c_str() == "buzz"
// a->second.c_str() == "foo"
Run Code Online (Sandbox Code Playgroud)
谢谢,PaulH
有没有办法在C中使用std :: pair和std :: make_pair?似乎它们适用于C++.
就像我用的那样
#include "utility"
Run Code Online (Sandbox Code Playgroud)
它说它找不到这样的文件
thansk任何建议