vector<string> 批量 赋值 c++
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vector<string> 批量 赋值 c++相关的知识,希望对你有一定的参考价值。
std::vector<std::string> Trans;
Trans = "a1w,a", "a2w,a","a3w,a";
我知道这样是不能实现的 但是有没有方法直接赋值 不用push_back? 因为要输入大量字符串,就得用几十个push_back;
可不可以建个结构体,然后批量存入
具体怎么写呢?
谢谢
template<typename T, typename A>
class vector;// 声明
namespace detail
template<typename T, typename A>
struct vector_inserter
public:
typedef vector<T, A> vector_type;
vector_inserter(vector_type &vec_) : vec(vec_)
vector_inserter& operator,(T const &val)
vec.push_back(val);
return *this;
private:
vector_type &vec;
;
template<typename T, typename A, typename Val>
detail::vector_inserter<T, A> operator+=(vector<T, A> &v, Val const &val)
return detail::vector_inserter<T, A>(v), (val);
#include <iostream>
#include <vector>
#include <string>
int main()
std::vector<std::string> vec;
vec += "1", "2", "3", "5", "6", "7", "8", "9", "10";
for (size_t i = 0; i != vec.size(); ++i) std::cout << vec[i] << " ";
std::cout << "\\n";
std::vector<int> vec;
vec +=
1, 2, 3, 5,
6, 7, 8, 9,
10;
for (size_t i = 0; i != vec.size(); ++i) std::cout << vec[i] << " ";
std::cout << "\\n";
return 0;
这里的关键在于重载逗号运算符。
你可以将前面部分代码放到一个头文件里,以后再对vector赋值的时候就都可以使用了。而且因为使用模板类型,对任意的std::vector<T>都可以使用。
其它办法:
1、小猪华smile的办法:先存到数组中,再用循环进行插入。
2、放入文件中,文件读取再插入。
最后,使用最新的C++标准,可以直接写
std::vector<std::string> vec = "1", "2", "3", "5", "6", "7", "8", "9", "10" ;std::vector<int> vec = 1, 2, 3, 5, 6, 7, 8, 9, 10 ; 参考技术A 同学要批量赋值给字符串,可以利用C++里面的指针数组就可以了,比如你定义一个指针数组,列如:char *p[],初始化可以是char *p=["china","banabn","xingming"];这样就可以实现大量字符串的赋值了。
C++ map<string, vector<pair<string, string> > > :将映射添加到空向量?
【中文标题】C++ map<string, vector<pair<string, string> > > :将映射添加到空向量?【英文标题】:C++ map<string, vector<pair<string, string> > > : adding a mapping to an empty vector? 【发布时间】:2013-07-05 19:47:47 【问题描述】:我对 C++ 容器模板非常陌生。我有一系列记录。每条记录都有一个唯一的名称和一个字段/值对列表。这些记录将按名称访问。字段/值对的顺序很重要。因此,我将其设计如下:
typedef string Typecode;
typedef string Fieldname;
typedef string Fieldvalue;
typedef vector<pair<Fieldname, Fieldvalue> > Field_value_pairs;
typedef map<Typecode, Field_value_pairs> Record_map;
Record_map records;
我想定义一个方法 add_record(Typecode),它将向 records 添加一个条目,其键类型为 Typecode 和一个空的 Field_value_pairs 向量。 (稍后我将添加部分或全部字段/值对。)但我似乎无法弄清楚要使用什么 map 和 vector 方法。
我想我想使用 operator=,如records["foo_record"] =
。但是我应该分配什么值来创建一个“空对向量”?
【问题讨论】:
分配它Field_value_pairs();
【参考方案1】:
你应该指定为:
records["foo_record"] = vector<pair<Fieldname, FieldValue> >();
std::vector 的默认构造函数将创建一个空向量,然后您可以使用向其添加新值
records["foo_record"].push_back(pair<Fieldname, FieldValue>("name", "value"));
【讨论】:
【参考方案2】:默认构造一个Field_value_pairs
对象并将其分配给新的映射条目。
void add_record( Record_map& records, Typecode const& code )
records[code] = Field_value_pairs();
请注意,这将覆盖该Typecode
的任何现有条目。如果您只想有条件地添加一个Typecode
,仅在一个不存在的情况下,使用map::find
来确定该条目是否存在。
void add_record( Record_map& records, Typecode const& code )
if( records.find( code ) == records.end() )
records[code] = Field_value_pairs();
else
// entry exists, do something else
【讨论】:
以上是关于vector<string> 批量 赋值 c++的主要内容,如果未能解决你的问题,请参考以下文章
c++ 把string类型的h1,赋值给vector<string>类型的h2
VHDL中std_logic_vector(4095 dow nto 0)怎么赋0初值
vector<vector<string>> 与vector<vector<string> >区别