本文整理汇总了C++中VectorOf::indexOf方法的典型用法代码示例。如果您正苦于以下问题:C++ VectorOf::indexOf方法的具体用法?C++ VectorOf::indexOf怎么用?C++ VectorOf::indexOf使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VectorOf
的用法示例。
在下文中一共展示了VectorOf::indexOf方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: name
VectorOf<Chars> PresentationParser::parseGeneratorList( Chars& errMesg )
{
VectorOf<Chars> result;
if ( curToken == INIT ) getToken();
while ( curToken == GENERATOR ) {
Chars name(tokenName);
// Check for duplication and presence of inverses.
if ( result.indexOf(name) >= 0 ) {
parseError("Duplicate generator");
errMesg = parseErrorMessage;
return result;
} else {
invertName(tokenName);
if ( result.indexOf(Chars(tokenName)) >= 0 ) {
parseError("Duplicate generator: formal inverse");
errMesg = parseErrorMessage;
return result;
}
}
result.append(name); // Ok, it's inefficient, but time is $$
getToken();
if ( curToken == COMMA ) {
getToken();
if ( curToken == DOT ) {
if (!getGeneratorRange(name,result,errMesg))
return result;
} else {
if ( curToken != GENERATOR ) {
parseError("Expected a generator here");
errMesg = parseErrorMessage;
return result;
}
}
}
}
return result;
}
示例2: look
Subgroup& Subgroup::deleteGenerator( const Word& w ) {
VectorOf<Word> theGenerators = look()->theGenerators;
int i = theGenerators.indexOf(w);
if ( i == -1 )
error("attempt to delete nonexistent word in Subgroup::deleteGenerator");
else {
int len = theGenerators.length();
VectorOf<Word> temp(len - 1);
int k = 0;
for( int j = 0; j < len; ++j )
if ( j != i ) temp[k++] = theGenerators[j];
change()->theGenerators = temp;
enhance()->theOrder = -1;
// @stc not yet correct: the order does not necessarily become unknown
return *this;
}
}
示例3: getGeneratorRange
bool PresentationParser::getGeneratorRange( const Chars& name,
VectorOf<Chars>& result,
Chars& errMesg )
{
if ( curToken != DOT )
error("bool PresentationParser::getGeneratorRange() "
"can't read the range");
// Make sure, that we have 3 dots in a row
for (int i = 0;i<2;i++){
getToken();
if ( curToken != DOT ) {
parseError("Expected '.' here");
errMesg = parseErrorMessage;
return false;
}
}
getToken();
// Supose to be ','
if ( curToken != COMMA ) {
parseError("Expected ',' here");
errMesg = parseErrorMessage;
return false;
}
getToken();
// Supose to be a generator
if ( curToken != GENERATOR ) {
parseError("Expected a generator here");
errMesg = parseErrorMessage;
return false;
}
Chars name1;
int beginRange;
// Generators must be in the form: <name><index>, where
// index is the first and the last generator index in a range.
//
Chars rangeErrMsg = "When defining a set of generators using a range of "
"subscripts, both the smallest subscript and the largest subscript"
" must be given and the smallest subscript mast be less then the "
"largest one";
if ( !getRangeOf(name,name1,beginRange)) {
parseError(rangeErrMsg);
errMesg = parseErrorMessage;
return false;
}
Chars name2;
int endRange;
if ( !getRangeOf(tokenName,name2,endRange)) {
parseError(rangeErrMsg);
errMesg = parseErrorMessage;
return false;
}
// The last index must be greater than the first one
if ( endRange <= beginRange) {
parseError(rangeErrMsg);
errMesg = parseErrorMessage;
return false;
}
// Names gave to be equal
if ( name2 != name1) {
parseError(rangeErrMsg);
errMesg = parseErrorMessage;
return false;
}
// Generate generators of type: name1<index>, where
// beginRange < index < endRange
int numberOfGens = endRange - beginRange - 1;
if (numberOfGens > 0){
VectorOf<Chars> gens(numberOfGens);
for(int i = 0;i<numberOfGens;i++){
gens[i] = name1+Chars(beginRange + 1 + i);
// Check for duplication and presence of inverses.
if ( result.indexOf(gens[i]) >= 0 ) {
parseError("Duplicate generator");
errMesg = parseErrorMessage;
return false;
} else {
char str[100];
strcpy(str,gens[i]);
invertName(str);
if ( result.indexOf(Chars(str)) >= 0 ) {
parseError("Duplicate generator: formal inverse");
errMesg = parseErrorMessage;
return false;
}
}
}
result = concatenate(result, gens);
}
return true;
}