要替换二维向量中的元素? [英] To replace an elemnt in the 2 dimensional vector?

查看:69
本文介绍了要替换二维向量中的元素?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


我需要帮助来捕捉二维矢量的特定第二元素并用一个新字符串替换它。



Hi I need help to catch a specific second elemnt of a 2d vector and replace it with a new string.

vector<pair<int,string>> 2dvector;



我尝试过迭代器,但是迭代器是矢量的副本,而不是矢量本身。



我的尝试:




I have tried by iterator but iterator is a copy of vector and not the vector itself.

What I have tried:

for (vector<pair<int,string>>::iterator it = 2dvector.begin() ; it != 2dvector.end(); ++it)
{
 if (it->second.find("OldString") != std::string::npos)
 {
	it->second.insert("NEWSTRING");
 }

}

推荐答案

为了替换 a字符串,我宁愿使用

In order to replace a string, I would rather use
for ( vector< pair< int, string > >::iterator it = v.begin(); it != v.end(); ++it)
{
  if ( it->second == "OldString")
    it->second = "NEWSTRING";
}



或者, C ++ 11


or, with C++11

for ( auto & x : v)
{
  if ( x.second == "OldString")
    x.second = "NEWSTRING";
}


你可以在没有迭代器的情况下工作(如果对你来说更容易,就像老式学校一样),这样:



You can work without iterator ("oldschool-like" if it is easier for you) like this:

vector<pair<int, string>> myVector(10);
myVector[0] = { 1, "test1" };
myVector[1] = { 2, "test2" };
myVector[2] = { 3, "test3" };

int nSize = myVector.size();

for (int i = 0; i < nSize; i++)
{
	if (myVector[i].second == "test2")
		myVector[i].second = "test22";
}


这篇关于要替换二维向量中的元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆